0

我正在构建一个程序,向用户询问有关房屋(编号、街道等)的一些问题,然后我将这些输入分配给字符串和整数。现在我的问题是我想问 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 会将所有问题彼此相邻地放在命令窗口的一行中。希望我说得通。有任何想法吗?

4

4 回答 4

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);结果将丢失。

于 2013-11-12T17:40:09.283 回答
0

只需将 sc.next 放在 println 语句之后。

System.out.println("Question");
String answer = sc.nextLine();
System.out.println("Second Question");

像那样。

于 2013-11-12T17:28:17.103 回答
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???");}
于 2013-11-12T17:31:24.433 回答
0

如果您在 Windows 上,那么这将不起作用:

sc.useDelimiter("\\n");

Windows"\\r\\n"在每行之间使用两个字符 , ,从我的测试来看,它似乎Scanner会看到"\\r", 并且会混淆它。这效果更好:

sc.useDelimiter("\\r?\\n");

它将作为"\\n""\\r\\n"作为分隔符。如果你仍然得到一个InputMismatchException,这可能会解决这个问题。(可能有更好的方法来表示系统相关的换行符。最好不要使用换行符作为分隔符,而是使用sc.nextLine()处理下一行和当前行上任何未使用的字符,或使用其他一些机制。)

于 2013-11-12T20:27:05.427 回答