小言_互联网的博客

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

264人阅读  评论(0)

今天,接着跟大家分享一波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多。

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


转载:https://blog.csdn.net/weixin_43408020/article/details/115274628
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场