java学习笔记——java流程控制01.用户交互Scanner
用户交互Scanner
一、Scanner对象
java提供了Scanner工具类来获取用户的输入
需要导入java包
import java.util.Scanner;
基本语法
Scanner s = new Scanner(System.in);
实例:
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方法接收:");
//判断是否还有输入
if (scanner.hasNextLine()){
String str = scanner.nextLine();
System.out.println("输入的内容为:"+str);
}
scanner.close(); //IO流的类如果不关闭就会一直占用资源
}
}
这里遇到一个next和nextLine的使用问题,next在遇到空格的时候就直接输出了,而nextLine是把回车作为结束符,这里如果用next方法获取输入的话,输出的内容就变成了“Hello”,我想一般情况下应该都是使用nextLine,那为什么不直接抛弃next呢?查了一下发现nextLine使用过程中有可能出现问题,把链接贴上来,方便自己解决问题。
Java中.next()和.nextLine()的区别-CSDN博客
【Java常见问题】Scanner中nextLine()方法没有执行就直接跳过了-CSDN博客
二、Scanner进阶使用
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = 0;
float f = 0.0f;
System.out.println("请输入整数:");
//判断是否输入整数
if (scanner.hasNextInt()){
i = scanner.nextInt();
System.out.println("输入的整数是:"+i);
}else{
System.out.println("输入的不是整数!");
}
System.out.println("请输入小数:");
//判断是否输入小数
if (scanner.hasNextFloat()){
f = scanner.nextFloat();
System.out.println("输入的小数是:"+f);
}else{
System.out.println("输入的不是小数!");
}
scanner.close(); //关闭scanner
}
}
例子:求输入的数的和与平均数
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double sum = 0;
int n = 0;
while (scanner.hasNextDouble()){
sum += scanner.nextDouble();
n++;
}
double ave = sum/n;
System.out.println("输入的" + n + "个数的和为" + sum);
System.out.println("输入的" + n + "个数的平均数为" + ave);
scanner.close();
}
}
疑问:java中回车并不会结束事件,除了输入非double型数据来结束循环,还有没有其他方式可以结束demo中的循环?