一、 实验目的与要求
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++方便的地方,学习并且掌握更多类与对象的使用。