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);

    }
}
posted @ 2019-09-24 16:18  以罗伊  阅读(413)  评论(0编辑  收藏  举报
levels of contents