我仍然是Java的新手,我已经在两天内遇到问题了。我只是向我的代码寻求帮助。我错过了什么或做错了什么?这是代码:
public static void main(String[] args)
{
menu();
}
public static double getMeters()
{
String str;
double meters;
// Get meters input from user:
str = JOptionPane.showInputDialog("Enter a distance in meters: ");
// Convert string input to double:
meters = Double.parseDouble(str);
// Validate input:
if (meters <= 0)
{
JOptionPane.showMessageDialog(null, "Error: Input must be a " +
" positive number");
getMeters();
break;
}
else
return meters;
}
public static void menu()
{
String choice;
double meters = getMeters();
// Show menu options:
choice = JOptionPane.showInputDialog("1. Convert to Kilometers \n" +
"2. Convert to Inches \n" + "3. Convert to Feet \n" +
"4. Quit Program \n" + "\n Enter your choice: ");
switch (choice)
{
case "1":
showKilometers(meters);
menu();
break;
case "2":
showInches(meters);
menu();
break;
case "3":
showFeet(meters);
menu();
break;
case "4":
JOptionPane.showMessageDialog(null, "Goodbye!");
System.exit(0);
break;
default:
JOptionPane.showMessageDialog(null, "Error: Invalid input.");
menu();
break;
}
}
public static void showKilometers(double meters)
{
double kilometers;
// Convert meters to kilometers:
kilometers = meters * 0.001;
// Display result:
JOptionPane.showMessageDialog(null, meters + " meters is " +
kilometers + " kilometers.");
}
public static void showInches(double meters)
{
double inches;
// Convert meters to inches:
inches = meters * 39.37;
// Display result:
JOptionPane.showMessageDialog(null, meters + " meters is " +
inches + " inches.");
}
public static void showFeet(double meters)
{
double feet;
// Convert meters to feet:
feet = meters * 3.281;
// Display result:
JOptionPane.showMessageDialog(null, meters + " meters is " +
feet + " feet.");
}
}
它一直在getMeters()方法中说“缺少返回语句”....? 我不知道如何解决这个问题,它可以验证输入,只接受正数...请帮忙。
这是我们处理方法的第一章,所以我不知道任何高级或任何花哨的技巧。
答案 0 :(得分:1)
getMeters()
方法的正确版本是:
public static double getMeters() {
String str;
double meters;
// Get meters input from user:
str = JOptionPane.showInputDialog("Enter a distance in meters: ");
// Convert string input to double:
meters = Double.parseDouble(str);
// Validate input:
if (meters <= 0) {
JOptionPane.showMessageDialog(null, "Error: Input must be a " +
" positive number");
return getMeters();
} else
return meters;
}
我拿出了break
。 break
用于删除for
,while
,do-while
或switch
语句,因此不允许将其放在何处。
我还将getMeters();
更改为return getMeters();
。 getMeters()
是一种返回double
的方法。您正在调用该方法但忽略返回的值。因此,您可以在没有返回任何内容的情况下到达方法的末尾。这是不允许的(除非方法具有void
返回类型)。
答案 1 :(得分:0)
在getMeters()方法中,如果执行if语句,则不会返回double,因为唯一的return语句位于else语句中。希望这有帮助!
BTW,在if语句中,break语句无效。它们仅在for循环和while循环以及switch语句中有效。
答案 2 :(得分:0)
在getMeters()方法的代码中,你有一个以break;
结尾的if语句,它将结束函数而不返回任何内容。它应该返回一个错误代码或-1.0,只是代表发生了什么的东西。
if (meters <= 0)
{
JOptionPane.showMessageDialog(null, "Error: Input must be a " + " positive number");
getMeters();
//error code for negative numbers is -1.0
//note that the return type is (Double) -1.0 rather than (int) -1
return -1.0;
}
else
return meters;
另外,我想解决if条件meters <= 0
。我敢打赌,0的距离是有效的。如果为真,则意味着条件应为meters < 0
。
答案 3 :(得分:0)
在getMeters中你不能使用break,你应该使用&#34; double&#34;作为回报,删除声明&#34; break&#34;然后使用&#34; return getMeters();&#34;就在下面。