Java 如何修复nextLine错误,以便打印两个单词?
下面的代码在运行时可以很好地工作,但是如果你在“bands”问题中输入两个单词,你只会得到一个打印出来的单词Java 如何修复nextLine错误,以便打印两个单词?,java,Java,下面的代码在运行时可以很好地工作,但是如果你在“bands”问题中输入两个单词,你只会得到一个打印出来的单词 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("What is your name?"); String name;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("What is your name?");
String name;
name = scan.next();
System.out.println("Hello " + name);
System.out.println("What is your age?");
int years;
years = scan.nextInt();
int ageInMonths;
ageInMonths = years * 12;
System.out.print("Your age is ");
System.out.print(ageInMonths);
System.out.println(" in months");
System.out.println("What are your favorite two bands?");
String bands = scan.next();
System.out.println("I like >>" + bands + "<<too!");
}
}
import java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.println(“你叫什么名字?”);
字符串名;
name=scan.next();
System.out.println(“Hello”+name);
System.out.println(“您的年龄是多少?”);
整数年;
年份=scan.nextInt();
国际月数;
年龄月=年*12;
系统输出打印(“您的年龄是”);
系统输出打印(以月为单位);
System.out.println(“以月为单位”);
你最喜欢的两个乐队是什么;
String bands=scan.next();
类中的方法next()
将只返回下一个标记
如oracle文档中所述:
查找并返回此扫描程序中的下一个完整令牌。A
完整标记的前面和后面是与
分隔符模式。此方法在等待输入时可能会被阻止
扫描,即使上一次调用hasNext()返回true
默认分隔符是一个空格,因此如果您的乐队名称包含多个单词,则该分隔符将不起作用
用于读取整行输入用户nextLine()
如果要分别使用两个波段名称,请调用nextLine()
两次以分别获取每个输入:
System.out.println("What are your favorite two bands?");
String band1 = scan.nextLine();
String band2 = scan.nextLine();
System.out.println("I like >>" + band1 + " and " + band2 + "<<too!");
System.out.println(“你最喜欢的两个乐队是什么?”);
String band1=scan.nextLine();
String band2=scan.nextLine();
System.out.println(“我喜欢>>”+band1+“和“+band2+”>“+bands+”要获得包含多个单词的完整字符串(直到enter
press),您应该使用scan.nextLine()
而不是scan.next()
(scan.next()
仅用于读取下一个单词)
不要忘记在scan.nextLine()之后和之前添加一个额外的scan.nextLine()
(参见中的内容):
publicstaticvoidmain(字符串…参数){
尝试(扫描仪扫描=新扫描仪(System.in)){
系统输出打印(“你叫什么名字?”);
字符串名称=scan.nextLine();
System.out.println(“Hello”+name);
系统输出打印(“您的年龄是多少?”);
int years=scan.nextInt();
整数月=年*12;
System.out.println(“您的年龄是“+ageInMonths+”in months”);
System.out.print(“你最喜欢的两个乐队是什么?”);
scan.nextLine();//在scan.nextLine()之后增加一个-它检索一个空字符串
String bands=scan.nextLine();
System.out.println(“我喜欢>>”+bands+“用户扫描.nextLine()instad of next();如果您使用scan.nextLine而不是仅仅使用next,它不会给您一个从链接中响应的机会,您必须从以前的阅读中删除换行符(请参阅下面我的答案)
Scanner scan = new Scanner(System.in);
System.out.println("What is your name?");
String name;
name = scan.next();
scan.nextLine();
System.out.println("Hello " + name);
System.out.println("What is your age?");
int years;
years = scan.nextInt();
scan.nextLine();
int ageInMonths;
ageInMonths = years * 12;
System.out.print("Your age is ");
System.out.print(ageInMonths);
System.out.println(" in months");
System.out.println("What are your favorite two bands?");
String bands = scan.nextLine();
System.out.println("I like >>" + bands + "<<too!");
public static void main(String... args) {
try (Scanner scan = new Scanner(System.in)) {
System.out.print("What is your name? ");
String name = scan.nextLine();
System.out.println("Hello " + name);
System.out.print("What is your age? ");
int years = scan.nextInt();
int ageInMonths = years * 12;
System.out.println("Your age is " + ageInMonths + " in months");
System.out.print("What are your favorite two bands? ");
scan.nextLine(); // extra one after scan.nextInt() - it retrieves a empty string
String bands = scan.nextLine();
System.out.println("I like >>" + bands + "<< too!");
}
}
What is your name? John Doe
Hello John Doe
What is your age? 666
Your age is 7992 in months
What are your favorite two bands? one two three
I like >>one two three<< too!