java循环语句

一、循环语句

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);
    }
}
  • 运行结果:
    java循环语句_第1张图片
    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();
        }
    }
}
  • 运行结果
    java循环语句_第2张图片
    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;
            } 
        }
    }
}
  • 运行结果:
    java循环语句_第3张图片
    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();
            }
        }
    }
}
  • 运行结果:
    java循环语句_第4张图片
    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();
                }
            }
        }
    }
}
  • 运行结果
    java循环语句_第5张图片
    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);
            }
        }
    }
}
  • 运行结果:
    java循环语句_第6张图片
    49708735.png

你可能感兴趣的:(java循环语句)