此问题在此处已有答案:
Scanner doesn't see after space(7个答案)
昨天就关门了。
代码:
import java.util.*;
public class InputInJava {
public static void main(String [] args){
Scanner sc = new Scanner(System.in);
String name = sc.next();
String fName = sc.nextLine();
int number = sc.nextInt();
float Fnumber = sc.nextFloat();
double Dnumber = sc.nextDouble();
short Snumber = sc.nextShort();
byte Bnumber = sc.nextByte();
long Lnumber = sc.nextLong();
System.out.println(name);
System.out.println(fName);
System.out.println(number);
System.out.println(Fnumber);
System.out.println(Dnumber);
System.out.println(Snumber);
System.out.println(Bnumber);
System.out.println(Lnumber);
}
}
字符串
输入:
String String 1 1
1
型
我检查了溢出和其他几个网站,其中弹出了谷歌我尝试了不同的输入,如输入2:
String String 1
1
1
1
1
1
1
型
输出为:
String
String 1
1
1.0
1.0
1
1
1
型
那么,为什么它只阅读nextLine的输入,直到1个空格,然后读取下一个输入呢?
1条答案
按热度按时间zpgglvta1#
您面临的问题与Java中Scanner类的工作方式有关。当您使用
sc.next()
时,它只从输入中读取一个标记(由空格分隔的字符序列)。另一方面,当您使用sc.nextLine()
时,它读取整行,包括直到行尾的所有空格。在您的示例中,当您输入“String String 1 1 1”时,sc.next()读取“String”,然后sc.nextLine()读取该行的其余部分,即“String 1 1 1”。这就是为什么您在尝试读取下一个输入时会看到意外行为的原因。
一种方法是这样的:
字符串