Java控制台输入
整理于2020年2月16日
步骤
- 创建Scanner对象,接收从控制台输入
Scanner input = new Scanner(System.in);
- 接收String类型或int类型
String str = input.next(); int n = input.nextInt();
在新增一个Scanner对象时需要一个System.in对象,因为实际上还是System.in在取得用户输入。
Scanner的next()方法用以取得用户输入的字符串;
nextInt()将取得的输入字符串转换为整数类型;同样,nextFloat()转换成浮点型;nextBoolean()转换成布尔型。
其实next()与nextLine()区别很明确:
- next() 方法遇见第一个有效字符(非空格,非换行符)时,开始扫描,当遇见第一个分隔符或结束符(空格或换行符)时,结束扫描,获取扫描到的内容,即获得第一个扫描到的不含空格、换行符的单个字符串。
- 使用nextLine()时,则可以扫描到一行内容并作为一个字符串而被获取到。
例子:
(1) 输入一个字符串或数
Scanner input = new Scanner(System.in);
String str = input.next();
System.out.print(str);
(2) 连续输入多行数字,以空行结束
Scanner scanner = new Scanner(System.in);
String nextLine = scanner.nextLine();
int sum = 0;
while (nextLine != null && !nextLine.equals("")) {
sum += Integer.parseInt(nextLine);
System.out.println(sum);
nextLine = scanner.nextLine();
}
System.out.println("end of input integer");
(3) 连续输入多行字符串,以空行结束
// 注:trim用于去除字符串两端Unicode编码小于等于32(\u0020)的所有字符;
// 还可使用trim()的重载方法String.Trim(Char[])自定义需去除的符号。
StringBuilder stringbuilder = new StringBuilder();
Scanner scanner = new Scanner(System.in);
while(true){
String text = scanner.nextLine().trim();
if ("".equals(text)){
break;
}
stringbuilder.append(text);
}
System.out.println(stringbuilder.toString());
(4) 输入多个数值,以空格分开
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
String[] numstr = str.split(" ");
int[] nums = new int[numstr.length];
for(int i = 0; i < numstr.length; i ++) {
nums[i] = Integer.parseInt(numstr[i]);
}
for(int n: nums) {
System.out.println(n);
}
System.out.println("end of input int in a line");
(5) 输入
Scanner in = new Scanner(System.in);
while(in.hasNext()){
String str = in.nextLine();
System.out.println(str);
}