Java学习第4天

while 与 do-while之间的区别

  • while 先判断条件,再执行循环体,(后面没有;)
  • do - while 先执行一次循环体,再判断条件,进行循环。(后面有;)
public static void main(String[] args) {
        int sum = 0;
        int i = 1; 
//      do {
//          i += 1;
//          System.out.println(i + ". Hello,world!");
//      } while (i < 10);
//      System.out.println("程序结束!!!");
        
    /*  do {
            sum += i;
            i++;
        } while (i <= 100 );
        System.out.println("最终结果为:" + sum);//1到100相加
        
        //for(;;)括号中可以不写条件,但是必须要有两个分号;
        for (int j = 1; j <= 10; j++) {//for循环
            System.out.println(j + ". hello,world");
        }
        */
        for(i = 1; i <= 100; i++){
            sum += i;
        }
        System.out.println(sum);
    }
for循环练习:输入一个数,算出这个数的阶层
  • for(;;)循环括号中可以不写条件,但是必须要有两个;
  • 对于较大的数字,建议使用double,它可以用科学计数法表示
public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入一个整数:");
        int n = input.nextInt();
        if (n >= 0) {
            double result = 1;//使用double,可以用科学计数法
            for(int i = 1;i <= n; i++){
                result *= i;
            }
            System.out.println(n + "的阶层为:" + result);
        }
        else {
            System.err.println("输入错误");
        }               
        input.close();
    }
练习:猜字游戏
  • Math.random()用于系统产生0~1的随机数,但不包括1
public static void main(String[] args) {
        int answer = (int) (Math.random() * 100 + 1);
        Scanner input = new Scanner(System.in);
        int thyAnswer;
        int counter = 0;
        do {
            counter += 1;
            System.out.print("请输入一个数字:");
            thyAnswer = input.nextInt();//thy表示你的
            if (thyAnswer > answer) {
                System.out.println("小一点");
            }
            else if(thyAnswer < answer){
                System.out.println("大一点");
            }
            else{
                System.out.println("恭喜你猜对了!你总共猜了" + counter + "次");
            }
        } while (thyAnswer != answer);
        if (counter > 7) {
            System.out.println("智商捉急");
        }
        input.close();
    }
练习:for嵌套switch-case
public static void main(String[] args) {                
        int a = 0;
        int b = 0;
        int c = 0;
        int d = 0;
        int e = 0;
        int f = 0;
        for(int i = 1;i <= 60000;i++){
            int face = (int) (Math.random()*6+1);           
            switch (face) {
            case 1:     
                a++;break;      
            case 2:     
                b++;break;
            case 3:     
                c++;break;
            case 4:     
                d++;break;
            case 5:     
                e++;break;
            case 6:     
                f++;break;
            default:
                break;
            }       
        }
        System.out.println("1点出现的次数为:" + a);
        System.out.println("2点出现的次数为:" + b);
        System.out.println("3点出现的次数为:" + c);
        System.out.println("4点出现的次数为:" + d);
        System.out.println("5点出现的次数为:" + e);
        System.out.println("6点出现的次数为:" + f);
    }
练习:求出100~999之间的水仙花数
  • 例:153 = 1^3 + 5^3 + 3^3 (153就是水仙花数)
public static void main(String[] args) {
        
        for(int i = 100;i <= 999;i++){
            int hun = i / 100;
            int ten = (i % 100) / 10;
            int one = i % 10;
            if (i == hun*hun*hun + ten*ten*ten + one*one*one) {
                System.out.println(i + "是水仙花数:");
            }
        }
    }
练习:输入两个数,求最大公约数和最小公倍数
public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入两个正整数:");
        int a = input.nextInt();
        int b = input.nextInt();
        for(int i = a < b ? a : b; i >= 1; i--){
            if (a % i == 0 && b % i == 0) {
                System.out.println("最大公约数为:" + i);
                System.out.println("最小公倍数为:" + a * b / i);
                break;              
            }
        }
        input.close();
    }

你可能感兴趣的:(Java学习第4天)