我正在尝试编写一个包含两个类的简单程序。我希望一个类(使用主方法)处理所有的输入和输出,另一个类处理所有的数学,然后将计算返回到主方法。我可以成功地将变量从主方法传递到数学课上的对象,并用println测试了该方法中的结果,但似乎无法将完成的计算传递回我的主方法。这是我的代码,请帮我理解。非常感谢这是主要方法的类
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");
}
}
您可以从方法返回值。。。
public double changeGaugesToInches(...)
{
....
return totalIncehs;
}
首先,根据惯例,java中的所有类和枚举名称都应该以大写字母开头。其次,你可能想为你的数学课使用一个更具描述性的名字,"UnitsConverter
",如果它只是这么做的话。
在changeGaugesToInches
中,应将arg1
和arg2
重命名为feet
和inches
。
最重要的是,您需要更改方法以返回结果,并将其分配给主方法中的一个变量:
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;
}
任何void方法都不能有返回值。自从public void changeGaugesToInches(字符串arg1,字符串arg2)是一个void方法,因此它没有返回类型。
如果将其设为静态,则不能使用mathObject=new math()