gpt4 book ai didi

java - 方法调用后结果错误

转载 作者:行者123 更新时间:2023-12-02 11:03:53 25 4
gpt4 key购买 nike

所以我现在正在学习 Java 类(class),任务是从 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);

}
}

最佳答案

在您的主要方法中,您执行以下操作:

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);

因此,基本上您创建了两个 double 值,然后将其传递到 testtests 方法中。然后在这些方法的上下文中检查这些数字,如果发现为负数,则提示用户重新输入数字。

问题是,最后,当您调用 display 方法时,您实际上从未传入 testtests 返回的值,而是传入您传入原始的 test1test2 因此,最终输出将仅显示用户的原始数字输入。由于这两个方法都返回 double 值,因此您可以将它们的返回值存储到变量中并将其传递给 display

从这个意义上讲,您的代码应该如下所示:

Scanner scanner=new Scanner(System.in);
System.out.println("Enter test 1 value");
// initial value is created and passed in to test method here
double test1 = Double.parseDouble(scanner.nextLine());
// here we grab the return value of the test method
double value1 = test(test1);
System.out.println("Enter test 2 value");
// initial value is created and passed in to tests method here
double test2 = Double.parseDouble(scanner.nextLine());
// here we grab the return value of the tests method.
double value2 = tests(test2);
// pass in the value returned from both methods (ensuring we have the latest user input) to display
display(value1, value2);

关于java - 方法调用后结果错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51127395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com