1

我正在尝试编写一个具有两个类的简单程序。我希望一个类(使用 main 方法)处理所有输入和输出,另一个类处理所有数学,然后将计算返回给 main 方法。我可以成功地将变量从 main 方法传递给数学类中的对象,并使用 println 测试了该方法中的结果,但似乎无法将完成的计算传递回我的 main 方法。这是我的代码,请帮助我理解。非常感谢这是带有主要方法的类

import java.util.Scanner;


public class io {
    public static void main (String[] args){
        Scanner chargeTankStartGaugeFeetInput = new Scanner(System.in);
        Scanner chargeTankStartGaugeInchesInput = new Scanner(System.in);
        System.out.println("What is the charge tank's start gauge feet: ");

        String chargeTankStartGaugeFeet = chargeTankStartGaugeFeetInput.nextLine();
        System.out.println("What is the charge tank's start gauge inches: ");

        String chargeTankStartGaugeInches = chargeTankStartGaugeInchesInput.nextLine();

        math mathObject = new math();
        mathObject.changeGaugesToInches(chargeTankStartGaugeFeet, 
                                        chargeTankStartGaugeInches);
        System.out.println(mathObject.totalInches(totalInches) 
                           + " is total inches in io");     
    }
}

我收到一条错误消息,主方法中的“totalInches”无法解析为变量。我的想法是否甚至接近这应该如何工作?

这是数学课

public class math {
    public void changeGaugesToInches(String arg1, String arg2) {
        double arg1Double = Double.valueOf(arg1).doubleValue();
        double arg2Double = Double.valueOf(arg2).doubleValue();

        double totalInches = arg1Double * 12 + arg2Double;

        System.out.println(totalInches + " is the total inches");
    }
}
4

3 回答 3

0

首先,按照惯例,java 中的所有类和枚举名称都应以大写字母开头。其次,你可能想为你的数学课使用一个更具描述性的名字,UnitsConverter如果这就是它所做的一切的话。

changeGaugesToInches中,您应该将arg1and重命名arg2feetand inches

最重要的是,您需要更改方法以返回结果,并将其分配给 main 方法中的变量:

double totalInches = mathObject.changeGaugesToInches(chargeTankStartGaugeFeet, chargeTankStartGaugeInches);

public double changeGaugesToInches(String arg1, String arg2){
    //...
    return totalInches;  
}

因为此方法不使用任何实例变量,除非您认为您可能会在子类中覆盖此方法(例如添加公制单位),否则如果您将其声明为静态代码会更有效。此外,除非您需要更高的准确性,否则您可能可以使用整数。

double totalInches = UnitsConverter.changeGaugesToInches(chargeTankStartGaugeFeet, chargeTankStartGaugeInches);

public static int changeGaugesToInches(String feet, String inches){
    return changeGaugesToInches( Integer.parseInt(feet), Integer.parseInt(inches) );
}

// this method can be used more efficiently from parts of your app that already have the units as integers.
public static int changeGaugesToInches(int feet, int in
    //...
    return totalInches;  
}
于 2012-08-26T22:51:08.170 回答
0

您可以从方法返回值...

public double changeGaugesToInches(...)
{
  ....
  return totalIncehs;
}
于 2012-08-26T22:51:18.700 回答
0

任何 void 方法都不能有返回值。由于 public void changeGaugesToInches(String arg1, String arg2)是一个 void 方法,因此它没有返回类型。

如果将其设为静态,则不能使用math mathObject = new math();

于 2015-04-08T07:29:42.963 回答