java循环语句

作者: lkee6760 | 来源:发表于2016-12-10 23:33 被阅读91次

    一、循环语句

    1.Scanner(next()和nextInt())和Random(nextInt())的使用

    • 代码:
    import java.util.Scanner;
    import java.util.Random;
    class ScannerRandomDemo_1 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            Random ran = new Random();
            //定义变量int类型i,把键盘录入的数赋值给i
            int i = sc.nextInt();
            if (i % 2 == 0) {       //判断录入的数的奇偶性
                System.out.println("您输入的数 " + i + " 是偶数");
            }else{
                System.out.println("您输入的数 " + i + " 是基数");
            }
            //随机一个[0,maxNum)的整数,注意包含头不包含尾
            System.out.println("随机一个0到您输入的数之间的一个数");
            int maxNum = sc.nextInt();
            int j = ran.nextInt(maxNum);
            System.out.println(j);
        }
    }
    
    • 运行结果:
      40160788.png

    2.利用for和if 求出从1~100以内的偶数的和

    a.方法一

    • 代码:
    class ForIfDemo_1 {
        public static void main(String[] args) {
            int sum = 0;
            for (int i = 1 ; i <= 100 ; i ++) {
                if (i % 2 == 0) {   //判断i是否是偶数
                sum = sum + i;      //是偶数则将把值赋值到sum中
                }
            }
            System.out.println(sum);//输出1~100之间偶数之和
        }
    }
    
    • 运行结果
      40615156.png

    b.方法二

    • 代码:
    class SumEven_1 {
        public static void main(String[] args) {
            int sum = 0;
            for (int i = 2 ; i <= 100 ; i += 2 ) {
                sum = sum + i;
            }
            System.out.println(sum);
        }
    }
    
    • 运行结果
      40891247.png

    3.利用双层for循环打印直角三角形

    • 代码:
    class RightTriangle {
        public static void main(String[] args) {
            for (int i = 1 ; i <= 10 ; i++ ) {
                for (int j = 0 ; j < i ; j ++ ) {
                System.out.print("·");
                }
                System.out.println();
            }
        }
    }
    
    • 运行结果
      41409513.png

    4.猜数字小游戏案例

    /*
    猜数字小游戏
    思路:
        a.计算机生成一个[1,100]伪随机整数,然后调出键盘录入,让用户猜这个随机数,
        b.如果用户猜的数字大于计算机生成的随机数,则提示“大了,请再猜!”;
        c.如果用户猜的数字小于计算机生成的随机数,则提示“小了,请再猜!”;
        d.如果用户猜的数字等于计算机生成的随机数,则提示“猜中了,收下我的膝盖!”。
    */
    import java.util.Scanner;
    import java.util.Random;
    class GuessNum {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            Random ran = new Random();
            int randomNum = ran.nextInt(100) + 1;
            System.out.println("Mr Robot已经选好了1-100的数字,请尽情的猜吧!");
            while (true) {
                int guessNum = sc.nextInt();
                if (guessNum < randomNum) {
                    System.out.println("小了,请再猜!");
                } else if (guessNum > randomNum) {
                    System.out.println("大了,请再猜!");
                } else {
                    System.out.println("牛逼啊,猜中了,请收下我的膝盖!");
                    break;
                } 
            }
        }
    }
    
    • 运行结果:
      42160580.png

    二、拓展练习:

    1.编写程序:(a,b为分析,最终只完成c即可)

    1. 生成1个1至10之间的随机整数,并打印结果到控制台(线索:利用Random类的生成整数随机数的功能)
    2. 生成20个1至10之间的随机整数,随机数之间用空格分隔(线索:利用Random类,重复生成随机数,利用for循环)
    3. 生成20个1至10之间的随机数,每5个一行进行打印(线索:利用计算器和%运算来控制每5个一换行)
    • 代码:
    import java.util.Random;
    class RandomNumberArray {
        public static void main(String[] args) {
            Random ran = new Random();
            for (int i = 1 ; i <= 20 ; i ++ ) {
                //生成一个[1,10]之间的随机数
                int singleRandomNumber = ran.nextInt(10) + 1;
                System.out.print(singleRandomNumber + " ");
                //为了打印整齐,如果随机数小于10,多打印一个空格
                if (singleRandomNumber < 10) {
                    System.out.print(" ");
                }
                //每五个换行一次
                if (i % 5 == 0) {
                    System.out.println();
                }
            }
        }
    }
    
    • 运行结果:
      43284739.png

    2.编写程序:(a,b为分析,只完成c即可)

    1. 只打印不包含7的110之内的整数(线索:对110之内的整数判断是否为7)
    2. 只打印数字中不包含7的 10到100之内的整数(线索:利用%10取出个位数,判断是否为7,利用/10取出百位数,判断是否为7)
    3. 只打印数字中不包含7的1~100之内的整数(线索:对a,b两个需求的代码整合)
    • 代码:
    class IntegerNoSeven {
        public static void main(String[] args) {
            int count = 0;  //定义一个计数器
            for (int i = 1 ; i < 100 ; i ++ ) { //遍历[1,100)的所有的整数
                //判断所有带有7的数,如果为true,continue跳出循环
                if (i % 10 !=7 && i / 10 != 7) {
                    count ++;   //计数所有符合要求的整数
                    System.out.print(i + " ");  //输出[1,100)中所有的整数
                    if (i < 10) {       //保证打印整齐
                        System.out.print(" ");
                    }
                    if (count % 10 == 0) {  //计数达到10个换行
                    System.out.println();
                    }
                }
            }
        }
    }
    
    • 运行结果
      45021467.png

    3.完成下面的程序

    有一张纸的厚度为0.01米,折多少次可以折成珠穆拉玛峰的高度8848米。

    • 假设一张纸的厚度为0.001米,折一次后厚度是多少?
    • 折两次、三次、四次厚度是多少
    • 折多少次厚度>=8848米
    • 代码:
    class PaperFolding {
        public static void main(String[] args) {
            double paperThickness = 0.01;
            int count = 0;//定义一个计数器
            while (true) {
                //开始折纸
                paperThickness = paperThickness * 2;
                count ++;//计数
                if (paperThickness >= 8848.0) {
                    break;
                }
            }
            System.out.println(count);
        }
    }
    
    • 运行结果:
      46600041.png

    4.看程序写结果:请自己独立分析,先不要编译运行。

    a.第一题

    • 代码:
    int x = 1,y = 1;
    if(x++==2 && ++y==2){
       x =7;
    }
    System.out.println("x="+x+",y="+y);
    
    • 运行结果:
      x=2,y=1

    b.第二题

    • 代码:
    int x = 1,y = 1;
    if(x++==1 || ++y==1){
        x =7;
    }
    System.out.println("x="+x+",y="+y);
    
    • 运行结果:
      x=7,y=1

    c.第三题

    • 代码:
    boolean b = true;
    if(b==false){
        System.out.println("a");
    }else if(b){
        System.out.println("b");
    }else if(!b){
        System.out.println("c");
    }else{
        System.out.println("d");
    }
    
    • 运行结果:
      b

    三、附加题:

    一个数如果恰好等于它的因子之和,这个数就称为 "完数 "如6=1+2+3.编程找出1000以内的所有完数。

    • 代码:
    class PerfectNumber {
        public static void main(String[] args) {
            for (int num = 2; num <= 1000 ; num ++ ) {
                int sum = 0;
                for (int divisor = 1 ; divisor <= num / 2 ; divisor ++) {
                    if (num % divisor == 0 ) {
                        sum = divisor + sum;
                    }
                }
                if (sum == num) {
                    System.out.println(num);
                }
            }
        }
    }
    
    • 运行结果:
      49708735.png

    相关文章

      网友评论

        本文标题:java循环语句

        本文链接:https://www.haomeiwen.com/subject/hpbumttx.html