目录
1.2. 使用 Scanner 循环读取 N 个数字,并求取其平均值
一、输入输出(补)
上一期中,博主漏掉了一些有关输入的知识点,我们在这一期中补上。
1.1.
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的年龄:");
int age =scanner.nextInt();
System.out.println(age+"岁");
System.out.println("请输入你所在的省份:");
String province= scanner.nextLine();
System.out.println(province+"省");
System.out.println("请输入你的体重:");
double height= scanner.nextDouble();
System.out.println(height+"kg");
当我们输入年龄之后,回车,发现后面的字符串直接打印出了。这是因为当我们输入第一个整数后的回车时,后面的nextLine直接读取了回车。我们要想解决这个问题呢,其实也很简单。当读取了一个数据后,我们可以加上scanner.nextLine。
1.2. 使用 Scanner 循环读取 N 个数字,并求取其平均值
Scanner sc=new Scanner(System.in);
int sum=0;
int num=0;
while(sc.hasNextInt()){
int tmp= sc.nextInt();
sum+=tmp;
num++;
}
System.out.println("Sum="+sum);
System.out.println("Avg="+sum/num);
sc.close();
这道题中涉及到循环输入读取的问题。“hasNext”可以理解为是否有下一个数据,如果有,继续读取。当我们在Windows上的IDEA使用时,在最后输入一个ctrl+d就可以结束程序。
二、猜数字游戏
系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字比该随机数小, 提示 "低 了", 如果输入的数字比该随机数大, 提示 "高了" , 如果输入的数字和随机数相等, 则提示 "猜对了"。
我们知道如何输入一个数字,那我们如何去生成一个随机数字呢?此时需要一个Random(同样需要导入util包)。 如果这段代码放在编译器上时,传入一个随机参数1114前面会有一个“seed”,100前面会有一个“bound”。如果我们运行上面这段代码,我们会发现每次生成的随机数是相同的。这个seed相当与系统的时间,如果不传参数,则系统的时间就是随机的。
Random ran= new Random(1114);
int num= ran.nextInt(100);//随机数的范围:[0,100)
System.out.println(num);
接下来就是猜数字,我们不知道自己要猜几次,所以这就是一个死循环。 下面的程序需要使用while循环,if语句还有break,下一期我们会讲到(如果C语言有一定基础的话,也能看懂)。
Random ran= new Random();
Scanner sca=new Scanner(System.in);
int num= ran.nextInt(100);//随机数的范围:[0,100)
System.out.println(num);
while(true){
System.out.println("请输入你要猜的数字:");
int a= sca.nextInt();
if(a>num){
System.out.println("猜大了");
}else if(a<num){
System.out.println("猜小了");
}else{
System.out.println("恭喜你,猜对了");
break;
}
}