所以我现在正在上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);
}
}
答案 0 :(得分:1)
在主要方法中,请执行以下操作:
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);
因此,基本上,您创建了两个双打,然后将它们传递到test
和tests
方法中。然后在这些方法的上下文中检查这些数字,如果发现这些数字为负,则提示用户重新输入数字。
问题是,最后,当您调用display
方法时,实际上并没有传递test
或tests
返回的值,而是传递了原始的{{1} }和test1
,因此为什么最终输出将仅显示用户的原始数字输入。由于这两个方法都返回一个double,因此您可以将其返回值存储到变量中,然后将其传递给test2
从这种意义上讲,您的代码应类似于:
display