java循环语句

340 阅读5分钟

一、循环语句

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的1~10之内的整数(线索:对1~10之内的整数判断是否为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