Java扫描程序:nextInt
我是一名编程初学者(学习Java)。我正在尝试编写一个程序,其中列出了四个不同的选项供用户选择 这是其中的一部分:Java扫描程序:nextInt,java,Java,我是一名编程初学者(学习Java)。我正在尝试编写一个程序,其中列出了四个不同的选项供用户选择 这是其中的一部分: import java.util.*; public class fight { public static int upgrade1 = 0; public static int upgrade2 = 0; public static int upgrade3 = 0; pu
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
我希望这是有意义的,任何帮助都是非常感谢的(我想我只是犯了一个愚蠢的新手错误)。此外,如果您对它的结构方式有任何建设性的批评,请不要犹豫。谢谢 每次调用
nextInt()
,都会从输入中读取另一个int。所以你只想叫它一次
int choice = scan.nextInt();
if (choice == 1) ...
if (choice == 2) ...
每次在if语句中调用
scan.nextInt
,它都会读取另一个int。更改为:
int userChoice = scan.nextInt();
if (userChoice == 1)
{
...
}
else if (userChoice == 2)
...
至于建设性的批评,选择一种你喜欢的风格并加以运用。你的压痕到处都是;这使得代码更难阅读。不管它是否是一种常用的风格,也不管其他人怎么想,只要确保你喜欢它并坚持下去就行了
Eclipse可以为您自动设置代码格式,这种行为是可定制的(您可以对其进行修改,使其符合您的风格)。您不能重复调用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:
...
这是因为您正在每个if/else if语句中调用scan.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);
}
您也多次调用scan.nextInt X。你注意到了吗染料,就像Wug暗示的那样,调用scan.nextInt()一次,并将结果存储在一个变量中。对不起,我不完全确定您的意思!:\好吧,我明白你们的意思了。如果我在后面添加另一个与此基本相同的部分,int'choice'是否会保持等于1,使程序其余部分中的所有选项都等于1?我是否需要将“选择”设置为静态,以便它可以随着程序中的每个选择而改变?多谢你的帮助:)好的,我明白你们的意思。如果我在后面添加另一个与此基本相同的部分,int'choice'是否会保持等于1,使程序其余部分中的所有选项都等于1?我是否需要将“选择”设置为静态,以便它可以随着程序中的每个选择而改变?如果能多给我一点帮助,我将不胜感激:)哦,这是一个切换声明!设想然而,鉴于我们正在与一名新手打交道,写下整个过程可能是个好主意,因为他可能以前没有见过语法。如果他使用
switch()
他可以使用nextInt()因为switch只调用它一次…问题是我不完全确定如何设置一个超过他所写内容的开关:\n不过我可能很容易就搞定了,谢谢大家!