有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java扫描程序:nextInt

我是一名编程初学者(学习Java)。我正在尝试编写一个程序,其中列出了四个不同的选项供用户选择

这是其中的一部分:

import java.util.*;
    public class fight {

            public static int upgrade1 = 0;
            public static int upgrade2 = 0;
            public static int upgrade3 = 0;
            public static int upgrade4 = 0;

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        System.out.println("Please enter your name:");

            String player = scan.next();    

System.out.println("You have earned 2 upgrade points. Which of the following traits would you like to boost by 2 points?\n"
    + " 1. upgrade1\n 2. upgrade2\n 3. upgrade3\n"
    + " 4. upgrade4");

                    if (scan.nextInt() == 1) {
                        upgrade1 = upgrade1 + 2;
                            System.out.println("Your upgrade1 level is now: " + upgrade1);
                    }
                    else if (scan.nextInt() == 2) {
                        upgrade2 = upgrade2 + 2;
                            System.out.println("Your upgrade2 level is now: " + upgrade2);
                    }
                    else if (scan.nextInt() == 3) {
                        upgrade3 = upgrade3 + 2;
                            System.out.println("Your upgrade3 level is now: " + upgrade3);
                    }
                    else if (scan.nextInt() == 4) {
                        upgrade4 = upgrade4 + 2;
                            System.out.println("Your upgrade4 level is now: " + upgrade4);
                    }                                                       
        }
} 

问题是:当用户输入他们想要选择的选项时,他们必须输入数字(x是他们选择的数字)x次数。例如,用户希望选择选项3。在控制台理解并完成下一行之前,他们必须在控制台中输入数字3三次

以下是运行程序后的控制台:

请输入您的姓名: 瑞克 你好,瑞克。您已获得2个升级点。以下哪项特质你希望提高2分? 1.升级1 2.升级2 3.升级3 4.升级4 3. 3. 3. 你的升级等级现在是:2

我希望这是有意义的,任何帮助都是非常感谢的(我想我只是犯了一个愚蠢的新手错误)。此外,如果您对它的结构方式有任何建设性的批评,请不要犹豫。谢谢


共 (4) 个答案

  1. # 1 楼答案

    每次在if语句中调用scan.nextInt时,它都会读取另一个int。更改为:

    int userChoice = scan.nextInt();
    if (userChoice == 1)
    {
        ...
    }
    else if (userChoice == 2)
    
    ...
    

    至于建设性的批评,选择一种你喜欢的风格并加以运用。你的压痕到处都是;这使得代码更难阅读。不管它是不是一种常用的风格,也不管其他人怎么想,只要确保你喜欢它并坚持下去就行了

    Eclipse可以为您自动设置代码的格式,这种行为是可定制的(您可以对其进行修改,使其与您的风格相匹配)

  2. # 2 楼答案

    每次调用nextInt(),都会从输入中读取另一个int。所以你只想叫它一次

    int choice = scan.nextInt();
    
    if (choice == 1) ...
    if (choice == 2) ...
    
  3. # 3 楼答案

    这是因为您正在调用scan。每个if/else if语句中的nextInt()。您要做的是存储他们输入的值,然后检查if/else if语句中的值,否则您基本上会多次提示用户输入

    int input = scan.nextInt();
    
    if (input == 1) {
        upgrade1 = upgrade1 + 2;
            System.out.println("Your upgrade1 level is now: " + upgrade1);
    }
    else if (input == 2) {
        upgrade2 = upgrade2 + 2;
            System.out.println("Your upgrade2 level is now: " + upgrade2);
    }
    else if (input == 3) {
        upgrade3 = upgrade3 + 2;
            System.out.println("Your upgrade3 level is now: " + upgrade3);
    }
    else if (input == 4) {
        upgrade4 = upgrade4 + 2;
            System.out.println("Your upgrade4 level is now: " + upgrade4);
    }
    
  4. # 4 楼答案

    您不能重复调用scan。nextInt()。当然,除非您希望读取多个不同的整数

    相反:

    Scanner scan = new Scanner(System.in);
    System.out.println("Please enter your name:");
    String player = scan.next();
    int ichoice = scan.nextInt();
    switch (ichoice) {
      case 1:
      ...