Java从入门到放弃篇12(Java日常练习)

本文分享了一系列Java编程练习,包括猜数游戏、简单的数学测试、九九乘法表、数字求和、最大公约数计算、学费增长预测及圆周率计算等。其中,圆周率计算导致了较高的CPU占用率。这些练习涵盖了基本的控制流程、随机数生成、用户交互及算法实现等Java编程基础概念。
摘要由CSDN通过智能技术生成

今天,接着跟大家分享一波Java编程,我是参照《Java程序设计》书编的程序。

代码如下图:

/**
 * Finish_time:2021/3/28
 * @author Mr.Pan_学狂
 * Java practice
 */

import java.util.*;
//import javax.swing.*;

class Example9{
	public static void main(String[] args) {
		System.out.println("Java使我快乐!!");
		test();
		test2();
		test3();
		test4();
		test5();
		test6();
		test7();
		test8();
		test9();
		test10();
		test11();
	}
	
	public static void test() {
		int number = (int)(Math.random() * 101);//生成0-100的随机数[0,100]
		Scanner input = new Scanner(System.in);
		System.out.println("猜数,区间是[0,100]");
		while(true) {
			System.out.print("\n请输入猜的数字: ");
			int guess = input.nextInt();
			if(guess == number) {
				System.out.println("恭喜你猜对了,这个数字是 "+number);
				break;
			}
			else if(guess > number) {
				System.out.println("你猜的数字高了!");
				continue;
			}
			else {
				System.out.println("你猜的数字低了!");
				continue;
			}
		}
	}
	
	public static void test2(){//猜数程序
		int number = (int)(Math.random() * 101);//生成[0-101]的随机数
		Scanner input = new Scanner(System.in);//创建输入对象
		System.out.println("请猜一个在0-100之间的数字");
		int guess = -1;
		while(guess != number) {//如果猜的数字与生成的随机数不一致
			System.out.print("\n请猜数:");
			guess = input.nextInt();//获取键盘输入
			
			if(guess == number) {
				System.out.println("恭喜你猜对了,数字是"+number);
			}
			else if(guess > number) {
				System.out.println("你猜的数字大了!");
			}
			else {
				System.out.println("你猜的数字小了!");
			}
		}
	}
	
	public static void test3() {//简单计算测试
		final int number_of_questions = 5;//设置5个问题
		int correctCount = 0;//设置初始的正确答案计数为0
		int count = 0;//设置计数为0
		long startTime = System.currentTimeMillis();//设置开始时间
		String output = "";//设置字符串为空字符串
		Scanner input = new Scanner(System.in);//创建输入对象
		
		while(count < number_of_questions) {//如果计数小于问题的数目
			int number1 = (int)(Math.random() * 10);//随机生成第一个数字
			int number2 = (int)(Math.random() * 10);//随机生成第二个数字
			
			if(number1 < number2) {//如果第一个数字小于第二个数字
				int temp = number1;//定义一个中间变量temp,用于将number1和number2的值互换
				number1 = number2;
				number2 = temp;
			}
			System.out.print(number1+" - "+number2+"? ");
			int answer = input.nextInt();//输入整数
			if(number1 - number2 == answer) {//如果计算结果与答案相同时
				System.out.println("恭喜你答对了!");
				correctCount++;//回答正确,计数器自增1
			}
			else {
				System.out.println("你的答案是错误的\n"+number1+" - "+number2+"应该是"+(number1 - number2));
			}
			count++;//每次问题结束后,计数器自增1
			output += "\n" + number1 + " - " + number2 + " = " + answer + ((number1 - number2 == answer) ? " 正确" : " 错误");
		}
		
		long endTime = System.currentTimeMillis();//设置结束时间
		long testTime = endTime - startTime;//做题花费的总时长时间
		
		System.out.println("总计答对" + correctCount +"个题目" + "\n答题花费时间:" +
		testTime / 1000 + "秒钟\n" + output);
	}
	
	public static void test4() {//输入数字求和
		Scanner input = new Scanner(System.in);//创建输入对象
		System.out.print("请输入一个整数(输入0退出):");
		int data = input.nextInt();
		int sum = 0;
		while(data != 0) {
			sum += data;
			System.out.print("请输入一个整数(输入0退出):");
			data = input.nextInt();
		}
		System.out.println("求和的结果是:"+sum);
	}
	
	
	public static void test5() {//输入数字求和
		int data;
		int sum = 0;//初始的求和为0
		Scanner input = new Scanner(System.in);//创建输入对象
		do {//做一次循环
			System.out.print("输入一个整数(输入0退出):");//当行输入
			data = input.nextInt();//获取键盘的输入
			sum += data;//求和
		}
		while(data!=0);//若是输入的数字不为0,继续循环,否则只执行一次循环就退出。
		System.out.println("求和结果是:"+sum);
	}
	
	public static void test6() {//自己做的九九乘法表
		int sum = 0;//设置一个控制换行的初始值为0
		System.out.println("九九乘法表");
		for(int i=1;i<10;i++) {
			for(int j=1;j<i+1;j++) {//内外层循环联系起来,i值进入内层循环
				sum += 1;//每次循环自增1
				System.out.print(i+" * "+j+" = "+(i * j)+"| ");//在当行输出
				if(sum == i) {//当i值等于sum值时,即最大的数时,就换行
					System.out.println();
					sum = 0;//换行后,将sum重新归为0,接着下一次换行。
				}
			}
		}
	}
	
	public static void test7() {//书本上的案例--九九乘法表
		System.out.println("                    九九乘法表");
		System.out.print("    ");//每个前面空四格
		for(int j=1;j<=9;j++) {//打印行
			System.out.print("   "+j);
		}
		System.out.println("\n-----------------------------------------");
		for(int i=1;i<=9;i++) {//i的范围[1-9]
			System.out.print(i + " | ");
			for(int j=1;j<=9;j++) {//j的范围也是[1-9]
				int result = i * j;
				System.out.printf("%4d",result);//占位符,d表示整数,4代表长度,若是长度不足4,则用空格补齐。
			}
			System.out.println();//换行
		}
		System.out.print("-----------------------------------------");
		System.out.println();
	}
	
	public static void test8() {
		float sum = 0;
		for(float i=0.01f;i<=1.0f;i=i+0.01f) {
			sum += i;
		}
		System.out.println("求和:"+sum);
	}
	
	public static void test9() {//最大公约数
		Scanner input = new Scanner(System.in);//创建输入对象
		System.out.print("请输入第一个整数:");
		int number1 = input.nextInt();//获取键盘输入的第一个整数
		System.out.print("请输入第二个整数:");
		int number2 = input.nextInt();//获取键盘输入的第二个整数
		
		int gcd = 1;
		int k = 2;
		while(k<=number1 && k<=number2) {
			if(number1 % k == 0 && number2 % k == 0) {
				gcd = k;
			}
			k++;//k值每次自增1
		}
		System.out.println(number1+"和"+number2+"的最大公约数是"+gcd);
	}
	
	public static void test10() {//计算学费程序
		double tuition = 10000;//初始化学费
		int year = 1;//初始化年数
		while(tuition < 20000) {
			tuition = tuition * 1.07;//学费每年都在增加
			year++;
		}
		System.out.printf("过"+year+"年学费将会变成%.2f",tuition);//格式化浮点数,保留两位小数
		System.out.println();
	}
	
	public static void test11() {//计算圆周率
		final int number_of_trials = 10000000;
		int numberOfHits = 0;
		
		for(int i=0;i<number_of_trials;i++) {
			double x = Math.random() * 2.0 - 1;//生成随机小数
			double y = Math.random() * 2.0 - 1;
			if(x * x + y * y <= 1) {
				numberOfHits++;
			}
			double pi = 4.0 * numberOfHits / number_of_trials;//计算π,双精度浮点数
			System.out.println("PI is "+pi);
		}
	}	
}

运行结果,如下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
关于代码的解释在文中的注释写了,不理解的朋友可以与我交流探讨。最后的这个计算圆周率是让我有点无语。CPU占用率直接飙升到90多。

最后,感谢大家前来观看鄙人的文章,文中或有诸多不妥之处,还望指出和海涵。

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不羁_神话

感谢支持,欢迎交流。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值