如果输入超过四个值,我的代码将无法运行

时间:2014-11-12 01:27:48

标签: java

此代码从米转换为英尺/英寸/公里。对不起,我知道这是基本的,我是Java的新手。当提示输入多个仪表时,如果输入4或更多,则不转换并结束程序。有谁知道我做错了什么?

import javax.swing.JOptionPane;

public class Measurements
{
  public static void main(String[] args)
  {
    // Have user make selection
    String input;
    int selectedNum;  // number chosen
    float numMeters; // number of meters
    input = JOptionPane.showInputDialog("Enter a distance in meters."); 
    numMeters = Float.parseFloat(input); 
    menu(); 
    selectedNum = Integer.parseInt(input); 
  // Selection results
    if (selectedNum < 1 )
    { errorMessage(); }
    if (selectedNum == 1)
    { showKilometers(numMeters); }
    if (selectedNum == 2)
    { showInches(numMeters); }
    if (selectedNum == 3)
    { showFeet(numMeters); }
    if (selectedNum == 4)
    { 
      exitSystem();
    } 

  }


  /** errorMessage method */
  public static double errorMessage()
  {
    double selectedNum;
    String input; 
    input = JOptionPane.showInputDialog("That is not a valid selection. Please enter 1, 2, 3, or 4."); 
    selectedNum = Integer.parseInt(input);
    return selectedNum; 
  }
  /** menu method */
  public static String menu()
  {
    String input; 
    input = JOptionPane.showInputDialog("Choose a selection:\n1. Convert to kilometers\n2. Convert to inches\n3. Convert "
                                   + "to feet\n4. Quit the program."); 
    return input;
  }
  /** showKilometers method */
  public static void showKilometers(double numMeters)
  {
    double result; 
    result = numMeters*.001; 
    JOptionPane.showMessageDialog(null, numMeters + " meters is " + result + " kilometers.");
  }
  /** showInches method */
  public static void showInches(double numMeters)
  {
    double inches; 
    inches = numMeters*(39.37);
    JOptionPane.showMessageDialog(null, numMeters + " meters is " + inches + " inches.");
  }
  /** showFeet */
  public static void showFeet(double numMeters)
  {
    double awesome; 
    awesome = (3.281*numMeters);
    JOptionPane.showMessageDialog(null, numMeters + " meters is " + awesome + " feet.");
  }
  public static void exitSystem()
  {
    System.exit(0);
  }

}

3 个答案:

答案 0 :(得分:2)

String input中的menu()String input中的main不同。

menu函数应return使用selectedNum的值。完成修复后,

menu(); 
selectedNum = Integer.parseInt(input); 

应更改为:

selectedNum = Integer.parseInt(menu());

答案 1 :(得分:0)

菜单()的输入返回不是main中的输入,main中的输入始终是指输入&#34;输入以米为单位的距离。&#34;,这就是用户输入的原因输入米数&gt; = 4程序退出或显示错误。此外,我更倾向于使用switch而不是if else for condition switching scenario;

public static void main(String[] args)
{

    double numMeters = Double.parseDouble(JOptionPane.showInputDialog("Enter a distance in meters.")); 

    switch(menu()) {
        case 1:
            showKilometers(numMeters);
            break;
        case 2: 
            showInches(numMeters);
            break;
        case 3;
           showFeet(numMeters);
           break;
        case 4;
           exitSystem();
           break;
        default;
           errorMessage();
           break;
    }
}

答案 2 :(得分:0)

只需使用此

selectedNum = menu(); 

而不是

menu(); 
selectedNum = Integer.parseInt(input); 

因为menu()函数已经返回整数值,所以不需要解析它。

但是你可以像在这段代码中那样使用switch语句

switch (selectedNum){
case 1: showKilometers(numMeters);
case 2: showInches(numMeters);
case 3: showFeet(numMeters);
case 4: exitSystem();
default: errorMessage();
}