一、循环语句
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); }}复制代码
- 运行结果:
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之间偶数之和 }}复制代码
- 运行结果
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); }}复制代码
- 运行结果
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(); } }}复制代码
- 运行结果
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; } } }}复制代码
- 运行结果:
二、拓展练习:
1.编写程序:(a,b为分析,最终只完成c即可)
- 生成1个1至10之间的随机整数,并打印结果到控制台(线索:利用Random类的生成整数随机数的功能)
- 生成20个1至10之间的随机整数,随机数之间用空格分隔(线索:利用Random类,重复生成随机数,利用for循环)
- 生成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(); } } }}复制代码
- 运行结果:
2.编写程序:(a,b为分析,只完成c即可)
- 只打印不包含7的1~10之内的整数(线索:对1~10之内的整数判断是否为7)
- 只打印数字中不包含7的 10到100之内的整数(线索:利用%10取出个位数,判断是否为7,利用/10取出百位数,判断是否为7)
- 只打印数字中不包含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(); } } } }}复制代码
- 运行结果
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); }}复制代码
- 运行结果:
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); } } }}复制代码
- 运行结果: