我正在构建一个程序,向用户询问有关房屋(数字,街道等)的一些问题,然后我将这些输入分配给字符串和整数。现在我的问题是我想问7/8问题,但我希望只有在用户为上一个问题提供输入后才会出现下一个问题。代码部分如下:
int choice = sc.nextInt();
sc.useDelimiter("\\n");
switch(choice){
case 1:
System.out.println("Geef antwoord op onderstaande vragen en druk op ENTER na elk antwoord: ");
System.out.println();
System.out.println("Is de koopwoning TE KOOP of VERKOCHT? Voer een van die twee opties in: ");
System.out.println("Voer de straatnaam van de woning in: ");
System.out.println("Voer het huisnummer in: ");
System.out.println("Voer de postcode in: ");
System.out.println("Voer de plaats in: ");
System.out.println("Voer het aantal kamers in: ");
System.out.println("Voer de vraagprijs/koopprijs in: ");
System.out.println("Voer het energiepeil in: ");
String kwstate = sc.next();
String kwstr = sc.next();
String kwnr = sc.next(); Integer.parseInt(kwnr);
String kwpc = sc.next();
String kwpl = sc.next();
int kwkamers = sc.nextInt();
int kwprijs = sc.nextInt();
String energie = sc.next();
如何使用此代码执行此操作?当我运行它时,它显然会显示所有排队,最重要的是,当我输入时,输入不会出现在问题旁边,而是出现在所有问题之下。 println对此负责,但仅使用print将所有问题放在命令窗口中的一行上。希望我有意义。有什么想法吗?
答案 0 :(得分:1)
在您要回答的问题之后直接放置每个“扫描”语句,如下所示:
System.out.println("Is de koopwoning TE KOOP of VERKOCHT? Voer een van die twee opties in: ");
String kwstate = sc.next();
System.out.println("Voer de straatnaam van de woning in: ");
String kwstr = sc.next();
System.out.println("Voer het huisnummer in: ");
String kwnr = sc.next();
//...
作为旁注,您没有保存Integer.parseInt(kwnr);
的结果
如果您不将结果保存为int
int kwnrInt = Integer.parseInt(kwnr);
值,则结果将会丢失。
答案 1 :(得分:0)
将sc.next放在println语句之后。
System.out.println("Question");
String answer = sc.nextLine();
System.out.println("Second Question");
就像那样。
答案 2 :(得分:0)
然后以Q&A
形式执行。
以下代码仅用于显示骨架逻辑:
System.out.print("Provide an integer here: ");
if sc.hasNextInt() {sc.nextInt()}
else {System.out.println("Didn't I tell you to enter integer???");}
答案 3 :(得分:0)
如果你在Windows上,那么这将不起作用:
sc.useDelimiter("\\n");
Windows在每行之间使用两个字符"\\r\\n"
,从我的测试中看来Scanner
会看到"\\r"
,这会让人感到困惑。这样做效果更好:
sc.useDelimiter("\\r?\\n");
将"\\n"
或"\\r\\n"
视为分隔符。如果您仍然获得InputMismatchException
,则可能会解决该问题。 (可能有更好的方式来表达依赖于系统的换行符。最好不要使用换行符作为分隔符,而是使用sc.nextLine()
来处理下一行和当前行上任何未使用的字符,或使用其他一些机制。)