开始学Java之4 Scanner 与 Random

Java输入真麻烦哈

Scanner

我这个萌新看来目前就相当于python的input吧。。

找出三个整数中最大的那一个(手动输入)

上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.Scanner;  //导入java模块,或者是类Scanner(应该就是扫描输入内容用的吧。。)

public class MaximumThree //定义类
{
public static void main(String[] args) //Main method 入口
{
Scanner scan = new Scanner (System.in); //将变量scan定为新的Scanner,呃咋解释。。括号内应该是代表这个scan变量干嘛用的,这个scan是用来Input的。。。晚点查查
int num1, num2, num3, maxnum; //定义变量为整数

System.out.println("Please enter three numbers!");
System.out.println("Please enter the first number:");
num1 = scan.nextInt(); //获取第一个数字
System.out.println("Please enter the second number:");
num2 = scan.nextInt(); //获取第二个数字
System.out.println("Please enter the third number:");
num3 = scan.nextInt(); //获取第三个数字

maxnum = num1; //先将maxnum设定为第一个数字
if (maxnum < num2) //如果小于第二个数字,改为第二个
maxnum = num2;
if (maxnum < num3) //如果小于第三个数字,改为第三个
maxnum = num3;

System.out.println("The biggest number is " + maxnum); //输出最大的数字
}
}

首先要跟python的模块一样,import, 代码是import java.util.Scanner;

然后不能直接用这个Scanner类,需要先将一个变量(scan)定义为这个Scanner类。。Scanner scan = new Scanner (System.in);

然后就是逻辑运算,最大数设为第一个,分别比较,两个比哪个大改成哪个,最后剩下最大的,输出。。

找出五个整数(或者更多)中最大的那一个(手动输入)

这时候就需要用到for loop了(不然你复制粘贴几百个if,和输入呀。。。)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Scanner; //导入Scanner模块

public class MaximumFive
{
public static void main(String[] args)
{
Scanner scan = new Scanner (System.in); //设定scan变量为新的Scanner类(系统输入)
int num, max=0; //定义num, max为整数,并且max为0(后面会先改成第一个的,不定义具体数字就运行不了。。)

System.out.println("Please enter three numbers!");

for (int i = 0; i < 3; i++){ //运行3次
System.out.println("Please enter the number:");
num = scan.nextInt();
if (i == 0) //获取输入的数字,第一次循环直接把数字设定为max
max = num;
else if (max < num ) //如果不是第一次循环,就把输入和max进行比较
max = num;
}

System.out.println("The biggest number is " + max); //输出max
}
}

这里学到一个小知识:else if,中间有空格,不是python的elif。。下面大佬解释的好清楚呀。。elif可以说是一个指令,else if是两个,拆开来就是

1
2
3
4
5
else{
if(Boolean){
//Code
}
}

这样吧。。。。

Random

Java同样要导入random模块

找出(手动输入)个整数(0-250)中最大的那一个(自动随机)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.Scanner; //导入Scanner类(输入用的)
import java.util.Random; //导入Random类(计算随机整数用的)

public class RandomMaximumFive
{
public static void main(String[] args)
{
Scanner scan = new Scanner (System.in); //定义scan为新的Scanner类(系统输入)
Random rand = new Random(); //定义rand为新的Random类,()应该是没有限制,说明啥的意思吧
int num, max=0, number; //定义这些变量为整数,并且max=0

System.out.println("Please enter how many numbers in the sequence");
num = scan.nextInt(); //输入你要随机多少个0-250的整数

for (int i=0; i < num; i++) //循环你输入的次数
{
number = rand.nextInt(250); //number变量设定为0-250随机一个整数,可能是123,可能是10,可能是250,可能是0。。
System.out.println(number); //每次都显示随机生成的数字

if (max < number) //比较max(0)与生成的数字,大的话就覆盖,小的话就管他呢。。
max = number;
}

System.out.println("The biggest number is " + max); //输出最大的那个数
}
}

这里random只学到了java.util.Random.nextInt ,为啥叫nextInt,不叫randInt啥的呢。。

大佬解惑

首先 else if 和 elif 虽然表现一致但其实不是一码事 …

else if 不是一个独立的关键字 … else if 解释为省略了 {} 的 else { if () … } …

nextInt 的定名来源于 Random 类 …

这个类的原理是「实例化即产生一个伪随机数列」 … 然后根据每次 next 不同的参数处理成不同的值 …

这话可能有点难以理解 … 你也可以理解成既然类名已经是 Random 了 … 再用 randInt 就语义重复了 …

严谨来说不太对 … 因为执行 next 的时候并没有产生随机动作 … 但单纯按照「语义重复」来理解问题不大 …

哦对「实例化」这个词你应该也还没接触到 … 理解成「new 了就有」就行 …

反正就是 new Random 之后就有一堆随机数在数学意义上等着 … 然后一个一个 next 出来就好 …

评论

:D 一言句子获取中...

加载中,最新评论有1分钟缓存...