Java课程实验报告实验一——基本程序设计、选择、循环

一、实验目的
学习Java基本程序编写的方法,熟悉选择、循环等控制结构。

二、实验内容
1.
编写程序,读取一个在0和1000之间的整数,并将该整数的各位数字相加。例如:整数932,各位数字之和为14。如果输入的整数不在0-1000范围内,告知用户输入有误。
提示:利用%和/分解数字。
2.
编写程序,提示用户输入三角形的三个点(x1, y1),(x2, y2), (x3, y3),然后显示它的面积。计算三角形面积的公式是:
s=(s1+s2+s3)/2;
面积 =
其中s1,s2, s3分别为三角形三边的长度。
输入示例:
Enter three points for a triangle: 1.5 -3.4 4.6 5 9.5 -3.4
The area of the triangle is 33.6
提示:使用Math类中的方法进行相关运算,见102页4.2.2节。
3.
编写程序,模拟从一副52张的牌中选择一张牌。程序应显示牌的大小(Ace、2、3、4、5、6、7、8、9、10、Jack、Queen、King)以及牌的花色(Clubs、Diamond、Heart、Spades)。
提示: 设1-13为黑桃Ace至King,14-26为红桃Ace至King,27-39为梅花Ace至King,40-52为方片Ace至King。随机生成1-52内的一个随机整数,根据以上规则判断并提示牌的花色和数字。
4.
编写程序,显示从100到200之间所有能被5或6整除,但不能被两者同时整除的数,每行显示10个数。(提示:建议使用模块化代码的方式)

三、实验结果与分析
1. 计算各位数字和
(1)实验结果显示

输入一个0-1000的整数
5                                
你的输入结果为5
输入一个0-1000的整数
4658
你的输入有误
输入一个0-1000的整数
-5
你的输入有误
输入一个0-1000的整数
468
你的输入结果为18
输入一个0-1000的整数
22
你的输入结果为4
输入一个0-1000的整数
0
程序结束

(2)结果分析
如果输入为小于0或大于1000的数字(如实验情况中-5,4658):输出实验结果有误,继续进行程序;
如果输入为0:程序结束;
如果输入为0-1000的数,实验范围正确,输出结果;
如:
输入 468 ,结果应为4 + 6 + 8 = 18
输入 22 ,结果应为2 + 2 = 4

2. 计算三角形面积
(1)实验结果显示

按顺序输入三个点的坐标
1.5 -3.4 4.6 5 9.5 -3.4
这三个点形成的三角形的面积为:  33.60
按顺序输入三个点的坐标
0 0 1 0 0 1
这三个点形成的三角形的面积为:  0.50

(2)结果分析
在输入六个浮点数(如果输入的是整数,根据隐式转换原则转换成浮点数进行处理;
如对于第一组数据中的5,转换成5.0后根据面积公式来处理
根据第二组,我们可以轻易地计算出真正的面积值和计算机给出的结果一致,程序算法正确;

3. 随机抽牌
(1)实验结果显示

The card you picked is 8 of Diamonds
	The card you picked is 7 of Clubs
	The card you picked is King of Spades
	The card you picked is 6 of Clubs
	The card you picked is 8 of Diamonds
	The card you picked is 6 of Clubs
……

(2)结果分析
根据程序算法,生成1-52的随机整数并分别对应一张牌,所以每
次f11之后会随机生成一张牌的名字,且在上一次进行后未设置查重,所以下一次出现的牌也可能和上次相同(如第四句和第六句);

4. 按规则显示数字
(1)实验结果显示

100 102 105 108 110 114 115 125 126 130 
132 135 138 140 144 145 155 156 160 162 
165 168 170 174 175 185 186 190 192 195 
	198 200 

(2)结果分析
根据题目要求,找出100-200中可以被5或6整除但不能被同时整
除(即不能被30整除)的数字,每行10个数字,共有32个数字出现;
再通过计算验证,程序算法正确;

四、心得体会
本次实验的题目就我自身而言是不难的,每道题的算法也比较清晰,需要的是基础过关、良好的代码风格和细致的累码,但是确实我在程序写完进行debug时仍然发现自己在java的格式上有所欠缺,例如main语句String[]后面的空格这样的格式错误还是有发生,基础仍然需要加强,还有在第四题count计数上有失误,细致度上也有待提高。
本次实验中我也了解了许多Math模块中的许多计算性的函数,也了解了printf的格式化输出部分,学到了东西。
实验过程中同学们通力协作的感觉很不错,希望能在接下来的实验中继续自己的累积和练习,争取将java基础夯实。

【附源程序】

**第一题:计算各位数字和**
import java.util.Scanner; 
public class experimentone{
	private static Scanner input;

	public static void main(String[] args){
		//循环,直到输入的是事先规定的程序结束的标志
		while(true){
		input = new Scanner(System.in);
		//提示
		System.out.println("输入一个0-1000的整数");
		int num = input.nextInt();
		//判断是否不是所需范围并提示
		if(num < 0 || num >= 1000){
			System.out.println("你的输入有误");
			continue;
		}
		//如果输入0,程序结束
		else if(num == 0){
			System.out.println("程序结束");
			break;
		}
		int sum = 0;
		//先对10取余,保存后取结果,这样就可以将所有位的位数取出,直到除尽为0
		while(num!=0){
			sum += num % 10;
			num /= 10;
		}
		//输出
		System.out.println("你的输入结果为"+sum);
	}
	}
}
**第二题:计算三角形面积**
import java.util.Scanner;

public class experimenttwo {
	private static Scanner input;

	public static void main(String[] args){
		input = new Scanner(System.in);
		//输入三个点的坐标,double类型
		System.out.println("按顺序输入三个点的坐标");
		double x1 = input.nextDouble();
		double y1 = input.nextDouble();
		double x2 = input.nextDouble();
		double y2 = input.nextDouble();
		double x3 = input.nextDouble();
		double y3 = input.nextDouble();
		//计算三边长度
		double s1 = Math.sqrt(Math.pow((x2 - x1), 2) + Math.pow((y2 - y1), 2));
		double s2 = Math.sqrt(Math.pow((x3 - x2), 2) + Math.pow((y3 - y2), 2));
		double s3 = Math.sqrt(Math.pow((x1 - x3), 2) + Math.pow((y1 - y3), 2));
		//根据海伦公式计算面积
		double s = (s1 + s2 + s3) / 2;
		double area = Math.sqrt(s * (s - s1) * (s - s2) * (s - s3));
		//按两位小数输出结果
		System.out.printf("这三个点形成的三角形的面积为:  %.2f",area);
	}
}
**第三题:随机抽牌**
public class experimentthree {
	public static void main(String[] args){

		//随机取1-52的数:先random*52得到0-52的浮点数,再取底得到0-51的随机整数,再加1得到1-52的随机整数
		int temp = (int)Math.floor(Math.random() * 52) + 1;
		System.out.print("The card you picked is ");
		//如果除13余0,证明可被13整除,对应king
		if(temp % 13 == 0)System.out.print("King");
		//如果除13余1,对应ace
		else if(temp % 13 == 1)System.out.print("Ace");
		//如果除13余11,对应jack
		else if(temp % 13 == 11)System.out.print("Jack");
		//如果除13余12,对应queen
		else if(temp % 13 == 12)System.out.print("Queen");
		//如果不符合上述条件,为一般情况,直接输出
		else System.out.print(temp % 13);
		System.out.print(" of ");
		//1-13对应Spades
		if(temp >= 1 && temp <= 13)System.out.print("Spades");
		//14-26对应Hearts
		else if(temp >= 14 && temp <= 26)System.out.print("Hearts");
		//27-39对应Clubs
		else if(temp >= 27 && temp <= 39)System.out.print("Clubs");
		//40-52对应Diamonds
		else System.out.print("Diamonds");
	}
}
**第四题:按规则显示数字**
public class experimentfour {
	public static void main(String[] args){
		int count = 1;
		//规定起点值
		final int start = 100;
		int temp = start;
		//对每一个数进行条件判断
		while(temp <= 200){
			if((temp % 5 == 0 || temp % 6 == 0) && temp % 30 != 0){
				//如果输出了十个,就println换行
				if(count == 10){
					System.out.println(temp + " ");
					//将count初始化
					count = 1;
				}
				//如果没有,一般输出
				else{
					System.out.print(temp + " ");
					//将count加1
					count++;
				}
			}
			//推到下一个数
			temp++;
		}
	}
}
发布了36 篇原创文章 · 获赞 11 · 访问量 2903

猜你喜欢

转载自blog.csdn.net/yeweij226/article/details/103827649