“退出困难”;“用户输入”;在主Java中调用的方法
我试图通过扫描仪(System.in)输入一些数值。我正在用我的方法从main调用一个类,并且很难退出该方法,我的问题正在循环 我相信这是一个简单的问题,但我花了很长时间寻找解决方案 方法如下:“退出困难”;“用户输入”;在主Java中调用的方法,java,java.util.scanner,user-input,Java,Java.util.scanner,User Input,我试图通过扫描仪(System.in)输入一些数值。我正在用我的方法从main调用一个类,并且很难退出该方法,我的问题正在循环 我相信这是一个简单的问题,但我花了很长时间寻找解决方案 方法如下: public static Object userInput(double nutWidth, double lastFretWidth, double scaleLength, int numFrets) { boolean dataCheck = true; try {
public static Object userInput(double nutWidth, double lastFretWidth, double scaleLength, int numFrets) {
boolean dataCheck = true;
try {
while (dataCheck == true) {
System.out.println("What is the width at the nut?");
NutWidth = key.nextDouble();
System.out.println("What is the width at the last fret?");
LastFretWidth = key.nextDouble();
System.out.println("What is the scale length?");
ScaleLength = key.nextDouble();
System.out.println("How many frets will your guitar have?");
NumFrets = key.nextInt();
dataCheck = false;
}
} catch (InputMismatchException e) {
System.out.println("Enter a integer.");
key.nextInt();
}
return userInput(NutWidth, LastFretWidth, ScaleLength, NumFrets);
}
以下是我的主要观点:
public static void main(String[] args) {
FingerBoard.userInput(0, 0, 0, 0);
FingerBoard.UserData();
}
非常感谢您的帮助,Mike您已经编写了一个无限递归。线路
return userInput(NutWidth, LastFretWidth, ScaleLength, NumFrets);
将在完成前一个方法后再次调用同一个方法。在我看来,您希望将值存储在数据结构中并返回该值,这需要调用构造函数,如下所示:
return new UserInput(NutWidth, LastFretWidth, ScaleLength, NumFrets);
您必须自己编写数据结构UserInput。如果您还没有开始编写类和数据结构,那么您可能希望变量是静态字段。如果要执行此操作,请将返回类型更改为void
,并完全删除return语句
与您的问题无关的其他注释。方法不需要参数。它们从未被使用过。您可能还希望将try/catch放在while循环中。这样,无效的输入将提示输入新的输入,而不是将其设置为0。您的返回语句一直在调用
userInput
,并且没有基本情况谢谢。所以我认为while语句毫无意义,问题是值需要作为数组传递。非常感谢您花时间解释。非常感谢,这非常有效。我去掉了while循环,使方法无效,并添加了一个enum类来返回信息。