一、循环语句
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的110之内的整数(线索:对110之内的整数判断是否为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);
}
}
}
}
- 运行结果: