0
点赞
收藏
分享

微信扫一扫

Java 必实验一:基本类型应用

谷中百合517 2022-03-30 阅读 152
java

一、 实验目的与要求

1.在掌握JAVA数组基本概念及应用的基础上,变换数组的内容,完成主类创建,查找等功能的实现;

2.熟练掌握数据类型、运算符、表达式和语句。

、实验内容

1. 运行一个关于二维数组的例子程序,代码如下,截图给出其运行结果,并简单解释说明程序功能。(15分)

2. 某省居民电价分三个“阶梯”:

月用电量50度以内的部分,电价为0.538元/度;

用电量在51度至220度之间的部分,电价为0.568元/度;

用电量超过220度的部分,电价为0.638元/度。

编写程序,用户从键盘输入用电量(要求在不终止程序的情况下能循环10次从键盘读入),程序输出用户应缴纳的电费。在报告中附上程序截图、运行结果截图和详细的文字说明。(20分)

3. 编写程序:用户从键盘输入10个正整数(这10个正整数分别包含1、2、3、4、5、6、7、8、9和10个数字),程序逆序打印出每个正整数的各位数字(例如:某个正整数为34567,程序输出76543)。在报告中附上程序截图、运行结果截图和详细的文字说明。(15分)

4. 编写程序:计算100-10000之间有多少个素数,并输出所有素数。在报告中附上程序截图、运行结果截图和详细的文字说明。(15分)

5. 编写程序:有一序列(分子为1、2、3递增,分母为1、2、4倍增):1/1,2/2,3/4,4/8,5/16,6/32,...求出这个数列的前10000项之和。在报告中附上程序截图、运行结果截图和详细的文字说明。(15分)

三、实验过程及结果

1. 二维数组例子程序运行结果截图及功能说明。

package example1;

public class TestArray {
    public static void main(String args[]) {
	    int [][]array;   //声明二维整型数组array
	    array = new int[5][];  //分配一块内存空间,供5行的整型数组array使用
	       
        for(int i = 0; i < 5; i++)
	        array[i] = new int[i];   //定义二维数组的第i行有i个元素
	        
            for(int i = 0; i < 5; i++)
	            for(int j = 0; j < array[i].length;){  //每一行元素的输出从0开始
	                array[i][j] = j;   //给每行的第i个元素赋值为i
	                System.out.print("   " + array[i][j]);   //第i行输出i个元素
	                ++j;
	                
                    if(j == (array[i].length))//第i行输出i个元素后换行
	                    System.out.println();
	            }
        }
}

 

2. 某省居民电价分三个“阶梯”:

月用电量50度以内的部分,电价为0.538元/度;

用电量在51度至220度之间的部分,电价为0.568元/度;

用电量超过220度的部分,电价为0.638元/度。

编写程序,用户从键盘输入用电量(要求在不终止程序的情况下能循环10次从键盘读入),程序输出用户应缴纳的电费。在报告中附上程序截图、运行结果截图和详细的文字说明。(20分)

package example1;
import java.util.*;   //加载java.util类库里的所有类
public class PowerRate {
	public static void main(String args[]) {
		float price = 0f;   //初始化浮点数price,用于计算电费
		int powernum = 0;   //初始化整数powernum
		Scanner buf = new Scanner(System.in);   //创建Scanner对象用于读取System.in的输入
		
        for(int i = 0; i < 10; i++) {   //在不终止程序的情况下循环10次
			System.out.printf("请输入用电量:");   //键盘输入用电量
			powernum = buf.nextInt();   //调用buf对象的相应方法,读取键盘数据后换行
			
            if(powernum <= 50)
				price = 0.538f*powernum;   //月用电量50度以内的部分,电价为0.538元/度;
			else if(powernum <= 220)
				price = 0.538f*50 + (powernum - 50) * 0.568f;   //用电量在51度至220度之间的部分,电价为0.568元/度;
			else if(powernum > 220)
				price= 0.538f * 50 + 170 * 0.568f + (powernum - 220) * 0.638f;   //用电量超过220度的部分,电价为0.638元/度。
			
            System.out.printf("应缴纳的电费为: ");
			System.out.printf("%.2f\n\n", price);   //控制输出电费为小数点后两位
		}
		
        buf.close();   //使用完Scanner的类后,关闭buf接口,释放内存
	}
}

 3. 编写程序:用户从键盘输入10个正整数(这10个正整数分别包含1、2、3、4、5、6、7、8、9和10个数字),程序逆序打印出每个正整数的各位数字(例如:某个正整数为34567,程序输出76543)。在报告中附上程序截图、运行结果截图和详细的文字说明。(15分)

package example1;
/*用户从键盘输入10个正整数(这10个正整数分别包含1、2、3、4、5、6、7、8、9和10个数字),
 程序逆序打印出每个正整数的各位数字(例如:某个正整数为34567,程序输出76543)。*/
import java.util.*;
public class ReserveOuput {
	public static void main(String args[]) {
		Scanner reader = new Scanner(System.in);   //创建Scanner对象用于读取System.in的输入
		System.out.printf("please enter an integer:");   //提示用户输入整型数
		int num;
		num = reader.nextInt();   //调用reader对象的相应方法,读取键盘数据后换行
		String str = Integer.toString(num);   //调用Integer.toString(int)函数将整型转换为字符串
		System.out.println(new StringBuilder(str).reverse().toString())   //调用StringBuilder 类中的reverse方法
		reader.close();   //关闭reader接口,释放内存
	}
}

4.  编写程序:计算100-10000之间有多少个素数,并输出所有素数。在报告中附上程序截图、运行结果截图和详细的文字说明。(15分)

package example1;
//计算100-10000之间有多少个素数,并输出所有素数。
import java.util.*;
public class Prime {
    public static void main(String args[]) {
	    System.out.println("100~10000之间的所有素数为:");
	    int cnt = 0;
     
        for (int i = 100; i <= 10000; i++) { 
            for (int k = 2; k <= i; k++) {         
                if (i % k == 0 ) {
                    if(i != k) break;   //所有在 i=k 之前能被k整除的数不是素数
                    
                    else {   //所有在 i=k 且 i%k=0的数为素数
                	    cnt++;//统计素数个数
                	    System.out.printf(i+" ");   //输出素数
                	    if(cnt%10 == 0)
                            System.out.println();   //使数据十个为一行输出,便于阅读
                    }
                }	
            }
        }
     System.out.println();
     System.out.println("共有"+cnt+"个素数");   //输出素数个数
	}
}

 5. 编写程序:有一序列(分子为1、2、3递增,分母为1、2、4倍增):1/1,2/2,3/4,4/8,5/16,6/32,...求出这个数列的前10000项之和。在报告中附上程序截图、运行结果截图和详细的文字说明。(15分)

package example1;
//1/1,2/2,3/4,4/8,5/16,6/32,...求出这个数列的前10000项之和。
public class Sum {
	public static void main(String args[]) {
		float sum = 0f;//初始化浮点数sum,用于计算数列和
		for(int i = 1; i <= 10000; i++) {
			sum += i*1.00 / Math.pow(2, i-1);//调用pow函数计算2的i-1次幂,计算前i项数列和
		}
		System.out.printf("该数列的前10000项之和为");
		System.out.printf("%.10f\n",sum); //保留10位小数输出前1000项数列和
	}
}

 

四、实验总结与体会

(写写感想、建议等)

通过以上5个实验的实践,我发现java和c++有很多相似的地方,学习起来比较轻松,有一些不太懂的知识点,如输入输出,格式控制,一些类跟函数的使用,通过查网很快可以解决。

希望接下来通过实验可以更加深入地了解到java对比c++方便的地方,学习并且掌握更多类与对象的使用。

举报

相关推荐

0 条评论