Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Try&;双数组中的捕获未按预期工作_Java_Arrays_Try Catch_Numberformatexception - Fatal编程技术网

Java Try&;双数组中的捕获未按预期工作

Java Try&;双数组中的捕获未按预期工作,java,arrays,try-catch,numberformatexception,Java,Arrays,Try Catch,Numberformatexception,我试图对用户输入执行try-catch,如果用户输入通过检查,则将其放入数组中,但如果输入无效的输入,则会将该索引替换为0并移动到下一个索引。我试图找出如何让reprompt在for循环中工作,以便用有效的用户输入替换该特定索引中的无效值。数组中值的顺序并不重要。我正在尝试在不导入其他Java库的情况下执行此操作 我将非常感谢任何帮助!我不熟悉编程和Java。谢谢你抽出时间 public static double[] getAmount() { int MAX_NUM = 1

我试图对用户输入执行try-catch,如果用户输入通过检查,则将其放入数组中,但如果输入无效的输入,则会将该索引替换为0并移动到下一个索引。我试图找出如何让reprompt在for循环中工作,以便用有效的用户输入替换该特定索引中的无效值。数组中值的顺序并不重要。我正在尝试在不导入其他Java库的情况下执行此操作

我将非常感谢任何帮助!我不熟悉编程和Java。谢谢你抽出时间

public static double[] getAmount()
   {
      int MAX_NUM = 10;
      double[] numArray = new double[MAX_NUM];
      for (int i = 0; i < numArray.length;i++)
      {
         double numInput;
         do
         {
            try
            {
               numInput = Double.parseDouble(JOptionPane.showInputDialog("Enter amounts in $: "));
            }
            catch (NumberFormatException e)
            {
               numInput = MAX_NUM - 11;
            }
            if (numInput < 0 || numInput > 999999)
            {
               JOptionPane.showMessageDialog(null, "Error. Please enter valid amount in dollars");
               numInput = Double.parseDouble(JOptionPane.showInputDialog("Enter amount in $: "));
            }
            else
            {
               numArray[i] = numInput;
            }
          }
          while (numInput < 0 && numInput > 999999);
       }
       return numArray;      
    }
publicstaticdouble[]getAmount()
{
int MAX_NUM=10;
double[]numaray=新的双精度[MAX_NUM];
for(int i=0;i99999)
{
JOptionPane.showMessageDialog(null,“错误。请输入有效金额(美元)”;
numInput=Double.parseDouble(JOptionPane.showInputDialog(“以美元为单位输入金额”);
}
其他的
{
Numaray[i]=努米普特;
}
}
而(numInput<0&&numInput>99999);
}
返回努马拉;
}
公共静态双[]getAmount()
{
int MAX_NUM=10;
double[]numaray=新的双精度[MAX_NUM];
int i=0;
而(i99999)
{
JOptionPane.showMessageDialog(null,“错误。请输入有效金额(美元)”;
numInput=Double.parseDouble(JOptionPane.showInputDialog(“以美元为单位输入金额”);
}
其他的
{
Numaray[i]=努米普特;
i++;
}
}
返回努马拉;
}
这应该可以:


public static double[] getAmount()
   {
      int MAX_NUM = 10;
      double[] numArray = new double[MAX_NUM];
      for (int i = 0; i < numArray.length;i++)
      {
         double numInput;
         do
         {
            try
            {
               numInput = Double.parseDouble(JOptionPane.showInputDialog("Enter amounts in $: "));
            }
            catch (NumberFormatException e)
            {
               numInput = MAX_NUM - 11;
            }
            if (numInput < 0 || numInput > 999999)
            {

               JOptionPane.showMessageDialog(null, "Error. Please enter valid amount in dollars");
            }
          }
          while (numInput < 0 || numInput > 999999);
          numArray[i] = numInput;
       }
       return numArray;      
    }

公共静态双[]getAmount()
{
int MAX_NUM=10;
double[]numaray=新的双精度[MAX_NUM];
for(int i=0;i99999)
{
JOptionPane.showMessageDialog(null,“错误。请输入有效金额(美元)”;
}
}
而(numInput<0 | | numInput>99999);
Numaray[i]=努米普特;
}
返回努马拉;
}

您应该尝试while循环,因为您需要控制iOh。非常感谢!我对使用for循环的想法非常着迷。我在if语句中的错误消息之后删除了该语句,它工作得非常好。再次感谢你!

public static double[] getAmount()
   {
      int MAX_NUM = 10;
      double[] numArray = new double[MAX_NUM];
      for (int i = 0; i < numArray.length;i++)
      {
         double numInput;
         do
         {
            try
            {
               numInput = Double.parseDouble(JOptionPane.showInputDialog("Enter amounts in $: "));
            }
            catch (NumberFormatException e)
            {
               numInput = MAX_NUM - 11;
            }
            if (numInput < 0 || numInput > 999999)
            {

               JOptionPane.showMessageDialog(null, "Error. Please enter valid amount in dollars");
            }
          }
          while (numInput < 0 || numInput > 999999);
          numArray[i] = numInput;
       }
       return numArray;      
    }