【发布时间】:2018-07-02 07:51:55
【问题描述】:
所以我现在正在学习 Java 课程,任务是从 main 方法调用某些方法,并让它们执行,然后将它们的输出传递给 main 方法。一切正常,除了由于某种原因没有更新用户输入。我有两个单独的类要求用户输入,如果用户输入低于零,他们必须在继续之前重新输入零之前的数字。即使他们输入了多个数字,并且数字大于零,所以它返回值,它只返回他们曾经输入的第一个输入,而不是正确的输入。对这些人有什么见解吗?第一次在这里问问题,所以我真的不知道我是否破坏了任何格式或诸如此类的东西。任何帮助表示赞赏。
我发布的代码不是我的课程的实际代码,它只是我制作的用于演示问题的单独程序,可用于修复我的主要代码。它只是减少了很多无用的东西。
import java.util.Scanner;
public class tezsters {
public static double test(double test1) {
Scanner scanner=new Scanner(System.in);
while(test1<=0) {
System.out.println("Test one must be above zero, please reenter");
test1 = Double.parseDouble(scanner.nextLine());
System.out.println(test1);// this line is just here to test if the user input was being assigned to test1, which it was.
if(test1>0) {
return test1;
}
}
return test1;
}
public static double tests(double test2) {
Scanner scanner = new Scanner(System.in);
while (test2 <= 0) {
System.out.println("Test two must be above zero, please reenter");
test2 = Double.parseDouble(scanner.nextLine());
System.out.println(test2);
if (test2 > 0) {
return test2;
}
}
return test2;
}
public static double display(double test1, double test2){
System.out.println("if test 1 is " + test1);
System.out.println("Then test 2 is " + test2);
return test1;
}
public static void main (String [] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("Enter test 1 value");
double test1 = Double.parseDouble(scanner.nextLine());
test(test1);
System.out.println("Enter test 2 value");
double test2 = Double.parseDouble(scanner.nextLine());
tests(test2);
display(test1,test2);
}
}
【问题讨论】:
-
尚未通读全文,但您可能不想为 System.in 分配多个扫描程序。分配一次,然后设置为静态/实例字段或通过方法参数传入。
标签: java user-input