您好,欢迎来到华佗健康网。
搜索
您的当前位置:首页实验2:Java语法

实验2:Java语法

来源:华佗健康网

  Java程序设计  实验报告  

  • 实验题目:实验(2)Java语法
  • 实验目的:1. 掌握Java的基本语法;2. 掌握Java的流程控制;3. 掌握数组的使用。
  • 实验要求:1. 每个题目,写出实验思路;2. 代码实现;3. 运行结果截图。
  • 实验内容

注释:题目中可能需要用到有些类和方法,大家还没有学过,请查阅相关资料,作为自学部分,比如随机输出整数等。

  • 实验执行

1 编写一个应用程序,给出汉字‘你’、‘我’、‘他’在Unicode表中的位置。

(1)思路

(2)代码实现

public class a
    {
       
public static void main(String args[]) {
           
char ni='';
           
char wo='';
           
char ta='';
            System.
out.println(ni+"的位置:"+(int)ni);
            System.
out.println(wo+"的位置:"+(int)wo);
            System.
out.println(ta+"的位置:"+(int)ta);
        }
    }

(3)运行结果截图

2编写一个Java应用程序,输出全部的希腊字母。

(1)思路

因为在Unicode表里希腊字母是按顺序排列的,只需要将第一个和最后一个希腊字母转换为int型位置进行之间的遍历char型输出即可

(2)代码实现

public class a

    {

        public static void main(String args[]) {

            char first='α';

            char last='ω';

            System.out.println("全部希腊字母:");

            for(int i=(int)first;i<=(int)last;i++)

            System.out.print(" "+(char)i);

        }

    }

(3)运行结果截图

3编写一个Java应用程序,计算1!+2!+3!+…+10!。

(1)思路

两个循环,外循环为一到十个数相加,内循环为实现单个阶乘

(2)代码实现

public class a

    {

        public static void main(String args[]) {

            int i;

            int a=1;

            int tem=1;

            int sum=0;

            System.out.print("1+2+3+…+10=");

            for(i=1;i<=10;i++) {

                for (a=1; a<=i; a++) {

                    tem = tem * a;

                    }

                sum = sum + tem;

                tem=1;//记得要更新tem值重新计算下一阶乘

                }

            System.out.print(sum);

            }

    }

(3)运行结果截图

4编写一个Java应用程序,计算1-50之间的所有素数的和。

(1)思路

两个循,外循环遍历1-50检验为素数的进行相加求和,内循环进行是否为素数的判断

(2)代码实现

public class a

    {

        public static void main(String args[]) {

            int i;

            int a;

            int sum=0;

            System.out.print("1-50之间的所有素数的和=");

            for(i=1;i<=50;i++) {

                for(a=2;a<i;a++)

                {

                    if(i%a==0)

                        break;

                        }

                if(a==i)

                    sum=sum+i;

                    }

            System.out.print(sum);

            }

    }

(3)运行结果截图

5分别用do-while和for循环计算1+1/2!+1/3!+1/4!…  … 的前20项和。

(1)思路

for:两个循环,外循环为一到20个数相加,内循环为实现单个阶乘分之一

do-while:一个循环,一到20个数相加,中间不断累乘新1/i进行阶乘计算进而求和

(2)代码实现

for:

public class a

{

    public static void main(String args[]) {

        int i;

        int a=1;

        double tem=1;

        double sum=0;//要用double型,不然小数就不见了

        System.out.print("1+1/2!+1/3!+1/4!…  … 的前20项和=");

        for(i=1;i<=20;i++) {

            for (a=1; a<=i; a++) {

                tem = tem * a;

            }

            sum = sum + 1/tem;

            tem=1;//记得要更新tem值重新计算下一阶乘

        }

        System.out.print(sum);

    }

}
do-while
public class ex1{

    public static void main(String args[]) {

        double sum = 0, number = 1, i = 1;

        do {

            number = number * (1.0 / i);

            sum += number;

            i++;

        } while (i <= 20);

        System.out.println(使用do-while循环计算的sum=" + sum);

    }

}

(3)运行结果截图

 

6一个数如果恰好等于它的因子之和,这个数就称为“完数”。编写应用程序求1000之内的所有完数。

(1)思路

外循环遍历1-1000,内循环检测该数是否恰好等于对应数因子之和

(2)代码实现

public class a {

    public static void main (String[] args) {

        System.out.println("1000之内的所有完数:");

        for(int i=1;i<=1000;i++)

        {

            int sum=0;

            for(int j=1;j<i;j++)//因子不包括本身,1也是

            {

                if(i%j==0)

                    sum+=j;

            }

            if(i==sum)

            {

                System.out.println(i+" ");

            }

        }

    }

}

(3)运行结果截图

7编写程序,求出几何形状(长方形、正方形、圆形)的周长和面积。

(1)思路

用switch语句进行输入选择类型,然后进入相关程序进行输入计算

(2)代码实现

import java.util.Scanner;

public class a {

    public static void main (String[] args) {

        System.out.println("请选择图形:");

        Scanner r=new Scanner(System.in);

        double s;

        double l;

        System.out.println("长方形:1 "+"正方形:2 "+"圆形:3 ");

        int a=r.nextInt();

        switch(a)

        {

            case 1:

            {

                System.out.println("请输入长和宽");

                int x=r.nextInt();

                int y=r.nextInt();

                s=x*y;

                l=2*(x+y);

                System.out.println("s="+s+"l="+l);

            }

            break;

            case 2:

            {

                System.out.println("请输入边长");

                int x=r.nextInt();

                s=x*x;

                l=4*x;

                System.out.println("s="+s+"l="+l);

            }

            break;

            case 3:

            {

                System.out.println("请输入半径");

                int x=r.nextInt();

                s=3.14*x*x;

                l=2*3.14*x;

                System.out.println("s="+s+"l="+l);

            }

            break;

        }

    }

}

(3)运行结果截图

 

 

8编写一个Java应用程序,产生10个100之内的随机整数输出,并把这10个数从小到大的顺序输出。

(1)思路

引用Math.radom()进行随机整数输出,然后利用两个冒泡排序进行从小到大排序并输出

(2)代码实现

public class ex1 {

    public static void main(String[] args) {

        int[] a = new int[10];

        int temp;

        System.out.println("10100之内的随机整数:");

        for (int i = 0; i < 10; i++) {

            int random = (int) (Math.random() * 100);//调用类Math中的random()方法,其本身范围是[0, 1,可以乘以一个数作为最大值。譬如:范围[0, 100)可以用Math.random() * 100来表示。

            System.out.print(random+" ");

            a[i] = random;

        }

        System.out.println("");

        System.out.println("按从小到大的顺序输出:");

        for (int i = 0; i < 10; i++) {

            for (int j = i + 1; j < 10; j++)//a[i]之后的值进行比较,j=i+1

            {

                if (a[i] > a[j]) {

                    temp = a[j];

                    a[j]=a[i];

                    a[i]=temp;

                }

            }

        }

        for (int i = 0; i < 10; i++)

        {

            System.out.print(a[i]+" ");

        }

    }

}

(3)运行结果截图

9编写一个Java应用程序,产生20个50-100之内的整数,并输出这20个数并找出最大数及最小数输出。

(1)思路

引用Math.radom()进行随机整数输出,然后利用两个冒泡排序进行从小到大排序,输出最大、小数

(2)代码实现

public class ex1 {

    public static void main(String[] args) {

        int[] a = new int[20];

        int temp;

        System.out.println("2050-100之内的随机整数:");

        for (int i = 0; i < 20; i++) {

            int random = (int) (50+Math.random() * 51);//调用类Math中的random()方法,其本身范围是[0, 1,int temp=m+(int)(Math.random()*(n+1-m)); //生成从mn的随机整数[m,n]

            System.out.print(random+" ");

            a[i] = random;

        }

        for (int i = 0; i < 20; i++) {

            for (int j = i + 1; j < 20; j++)//a[i]之后的值进行比较,j=i+1

            {

                if (a[i] > a[j]) {

                    temp = a[j];

                    a[j]=a[i];

                    a[i]=temp;

                }

            }

        }

        System.out.println("");

        System.out.println("最小值:"+a[0]);

        System.out.println("最大值:"+a[19]);

    }

}

(3)运行结果截图

  • 实验测试中遇到的问题和自己的解决方案

1.不知道如何得到随机数:

调用类Math中的random()方法,其本身范围是[0, 1),int temp=m+(int)(Math.random()*(n+1-m)); //生成从m到n的随机整数[m,n]

2.不太熟输入的代码编写

import java.util.Scanner;

Scanner r=new Scanner(System.in);

int a=r.nextInt();

3.计算1+1/2!+1/3!+1/4!…  的前20项和时忘记了更新中间变量为零

for (a=1; a<=i; a++) {
                    tem = tem * a;
                    }
                sum = sum + tem;
                tem=1;//
此步
                }

4.不知道如何用do-while实现1+1/2!+1/3!+1/4!…  的前20项和

后来发现除了每次从0开始逐次乘得阶乘还可以直接累乘更方便,少了个循环

   do {
            number = number * (1.0 / i);//
此步
            sum += number;
            i++;
        } while (i <= 20);

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务