Java 为什么要使用scan.nextLine();将字符串与整数一起扫描的步骤
嗨,我有个问题解决了,但我不知道原因:Java 为什么要使用scan.nextLine();将字符串与整数一起扫描的步骤,java,Java,嗨,我有个问题解决了,但我不知道原因: import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { public static void main(String[] args) { int i = 4; double d = 4.0; String s = "Hello ";
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
int i = 4;
double d = 4.0;
String s = "Hello ";
Scanner scan = new Scanner(System.in);
int a;
String c;
a= scan.nextInt();
scan.nextLine();
c = scan.nextLine();
System.out.println(i + a);
System.out.println(s + c);
scan.close();
}
}
input:
4
World! How are you!!
当我删除行scan.nextLine()时
beforec=scan.nextLine()代码>我得到一个错误。谁能告诉我原因吗
我用过:
String a;
String c;
a = scan.nextLine();
int b = Integer.parseInt(a);
c = scan.nextLine();
System.out.println(i + a);
System.out.println(s + c);
但答案是:
44
Hello World! How are you
scan.nextLine在输入4后读取回车键
没有它,c被设置为回车键,程序完成
public static void main(String[] args){
int i = 4;
String s = "Hello ";
Scanner scan = new Scanner(System.in);
int a;
String c;
a = Integer.parseInt(scan.nextLine());
c = scan.nextLine();
System.out.println(i + a);
System.out.println(s + c);
scan.close();
}
输入为“4”和Doug时,输出为:
8
Hello Doug
如果删除行scan.nextLine()代码>,表示在一行中输入两个数据(变量a和c)。编译器很难决定应该解决哪一个问题代码>,两个输入将以不同的行进行编译,并将正常运行。原始代码的问题
scan.nextLine();
a = Integer.parseInt(scan.nextLine());
c = scan.nextLine();
System.out.println(i + a);
System.out.println(s + c);
这是第一行。您必须放弃第一行输入
考虑你的意见
4
你好吗
第一行由您的第一个用户读取
scan.nextLine();
因此,第一行
四,
被丢弃
然后,下一行代码是
a = Integer.parseInt(scan.nextLine());
它首先执行scan.nextLine()
。这是你的第二行
你好吗
并尝试使用Integer.parseInt()
将其转换为一个数字,该操作失败,出现异常
在你的解决方案中
a= scan.nextInt();
scan.nextLine();
c = scan.nextLine();
第二行是必需的,因为scan.nextInt
不会删除换行符
再考虑一下输入
4
你好吗
第一行a=scan.nextInt()代码>读取
四,
并且只有4
,将输入保留为
你好吗
如果现在执行c=scan.nextLine()
直接,c
将被分配空字符串,它仍然是第一行。
因此,第二行删除空行,并将输入保留为空
你好吗
现在可以使用c=scan.nextLine()读取它
以获取所需的字符串
如果您还有更多问题,请尝试通过调试器和手动模拟代码的执行,甚至可能是在纸上。这有助于您了解实际发生的情况。什么错误?你想用它做什么?nextInt()
不使用新行字符。我建议始终使用nextLine()
获取用户输入,然后进行解析,例如Integer.parseInt(scan.nextLine())
。我按照您的建议进行了操作,但仍然出现错误。