JAVA循环结构学校上机经常遇到的几题 笔记
package homework.class4; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; public class HomeWorker { public static void main(String[] args) { // 1. 从键盘循环输入正整数,当输入-1时结束,统计输入的正整数的个数。 // home(); // 2. 从键盘输入一个整数,判断该数是否素数。素数是只能被1 和本身整除的数。可用穷举法来判断一个数是否是素数。 // home1(); // 输出100以内的所有素数 // home2(); // 九九乘法表 // home3(); // 分解质因数 // home4(); // 6.输入某年某月某日,判断这一天是这一年的第几天? // home5(); // 7.输入一个数值,以反向的数值方式进行输出 // home6(); // 8.输入一个数值,根据输入数值打印出如下结果 // 如:输入3 // 3 // 33 // 333 // home7(); // 9 输入年份和月份 第六题的升级版 // 9.输入年份和月份可以显示出当月一共有几天,年份必须大于0,月份必须为1-12之间。 // 执行情况如下 // 请输入年份: // 当年份输入错误后会出现提示,并要求重新输入年份 // 提示内容为: // 您输入的年份有误!(年份必须大于0) // 请重新输入正确的年份: // // 请输入月份: // 当月份输入错误后会出现提示,并要求重新输入月份 // 您输入的月份有误!(月份范围为1-12) // 请重新输入正确的月份: // // 所有输入完成后会显示当年当月有几天,随后询问用户是否要再次查询? // 如果用户选择是,则再次执行程序 // 如果用户选择否,则结束程序 home8(); } private static void home8() { Scanner scan = new Scanner(System.in); while (true) { // int year,month,day; int feb = 29; int[] months = {31, feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // List months = Stream.of(lists).collect(Collectors.toCollection(ArrayList::new)); // List months = new ArrayList<>(Arrays.asList(lists)); int currentDay; System.out.println("输入年份(大于0):"); int year = scan.nextInt(); while (true) { if (0 > year) { System.out.println("您输入的年份有误!"); System.out.println("请重新输入正确的年份:"); year = scan.nextInt(); continue; } break; } // 判断是否是闰年 // GregorianCalendar:判断年份是否是闰年的方法 // 二月 boolean leapYear = new GregorianCalendar().isLeapYear(year); feb = leapYear ? 29 : 28; // months.add(1,feb); // System.err.println(months.get(1)); months[1] = feb; // System.err.println(months[1]); System.out.println("请输入月份(1-12):"); int month = scan.nextInt(); while (true) { if (1 > month || month > 12) { System.out.println("您输入的月份有误!(月份范围为1-12)"); System.out.println("请重新输入正确的月份: "); month = scan.nextInt(); continue; } break; } // currentDay = (int) months.get(month-1); currentDay = months[month - 1]; System.out.println("请输入输入日期:"); int day = scan.nextInt(); while (true) { if (1 > day || day > currentDay) { System.out.println("请输入输入日期,不大于" + currentDay + ":"); day = scan.nextInt(); continue; } break; } if (1 == month) { System.out.println("这一天是这一年的第" + day + "天"); return; } int totalDay = 0; for (int i = 0; i < month - 1; i++) { // totalDay += (int)months.get(i); totalDay += months[i]; } totalDay += day; System.out.println("这一天是这一年的第" + totalDay + "天"); System.out.println("是否要再次查询?(y/n、任意键退出)"); String str = scan.next(); if (str.equals("y")){ continue; } break; } } private static void home7() { int n = 6,temp=n; for (int i = 1; i < n+1; i++){ for (int j = 1;j<=i;j++){ System.out.print(n); } System.out.println(); } } // 例如:输入54321 输出12345 // 输入879 输出978 private static void home6() { int inputVal = 54321, n; for (int i = inputVal; i > 0 ;i /=10){ n = i % 10; System.out.print(n); } } private static void home5() { // String str = "2019-12-13"; // String[] split = str.split("-"); // int year = Integer.parseInt(split[0]); // int month = Integer.parseInt(split[1]); Scanner scan = new Scanner(System.in); System.out.println("输入年份:"); int year = scan.nextInt(); System.out.println("请输入月份(1-12):"); int month = scan.nextInt(); System.out.println("请输入输入日期:"); int day = scan.nextInt(); //判断是否是闰年 //GregorianCalendar:判断年份是否是闰年的方法 boolean leapYear = new GregorianCalendar().isLeapYear(year); // 2月 int feb = leapYear?29:28; // System.out.println(feb); int[] months={31,feb,31,30,31,30,31,31,30,31,30,31}; int currentDay; while(true){ if (1 > month || month > 12){ System.out.println("请输入月份(1-12):"); month = scan.nextInt(); continue; } currentDay = months[month-1]; if (1 > day || day > currentDay){ System.out.println("请输入输入日期,不大于"+currentDay+":"); day = scan.nextInt(); continue; } break; } if (1 == month){ System.out.println("这一天是这一年的第"+ day +"天"); return; } int totalDay = 0; for (int i = 0; i < month-1; i++){ totalDay += months[i]; } totalDay += day; System.out.println("这一天是这一年的第"+ totalDay +"天"); } private static void home4() { int n = 13; if (1 == n){ System.out.println(n); return; } for (int i = 2; i <= n; i++){ while (n % i == 0){ if (i == n){ System.out.println(n); break; }else { System.out.print(i + "*"); n /= i; } } } } private static void home3() { System.out.println("1\t\t2\t\t3\t\t4\t\t5\t\t6\t\t7\t\t8\t\t9\t"); System.out.println("--------------------------------------------------------------------------------"); for (int i = 1; i < 10; i++){ for (int j = i; j < 10;j++){ // if (i > j){ // System.out.println("\t"); // continue; // } System.out.print(i + "*" + j + "=" + i*j + "\t"); } System.out.println(); for (int k = 0; k < i; k++){ System.out.print("\t\t"); } } } /** * 判断一个数是不是素数:只能被1和本身整除 * @param n * @return */ private static boolean numberIsPrime(int n) { for (int i = 2; i <= Math.sqrt(n); i++) { if (n % i == 0) { return false; } } return true; } private static void home2() { int tmp = 100; boolean flag = true; // if(tmp<1){ // System.out.print("该数不是质数!"); // return; // } // System.out.println(Math.sqrt(tmp)); if (1 == tmp){ return; } for (int i = 2; i <= tmp; i++){ if (numberIsPrime(i)){ System.out.print(i+"\t"); } } } private static void home1() { int tmp = 100; boolean flag = true; if(tmp==1){ System.out.print("该数是质数!"); return; } // System.out.println(Math.sqrt(tmp)); // 开根号 // for(int i = 2 ; Math.sqrt(tmp/2) >=i ; i ++ ){ for(int i = 2 ; Math.sqrt(tmp) >= i ; i ++ ){ if(tmp%i==0){ System.out.print("该数不是质数!"); flag = false; break; } } if (false){ System.out.print("该数是质数!"); } } // 1. 从键盘循环输入正整数,当输入-1时结束,统计输入的正整数的个数。 private static void home() { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个整数:"); int val = scanner.nextInt(); int count = 0; while (val != -1){ count++; System.out.println("请输入一个整数:"); val = scanner.nextInt(); } System.out.println(count); } }
作者:以罗伊
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。