我试图随机化一些已经转换为整数的字符串 但问题是,我的编码引发了以下例外:
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "1 2 3 4 5"
这是我的代码:
int sample = Integer.parseInt(jTextField1.getText());
int foo = Integer.parseInt(jTextArea1.getText());
String a = "";
Random randomGenerator = new Random();
{
for (int i = 1; i <= sample; i++) {
int randomInt = randomGenerator.nextInt(foo);
a = a + i + foo + "\n";
jTextField2.setText("" + randomInt + a + "\n");
}
我做错了什么?
答案 0 :(得分:1)
当某个方法作为数字解析为方法但该方法无法将其识别为数字时,会导致NumberFormatException
。例如,在您的代码中,此行可能会抛出此异常。
Integer.parseInt(jTextField1.getText());
如果文本字段中的文本类似于"1 2 3 4 5"
,则该方法无法将其转换为单个int
,因此会抛出错误。您需要验证输入以确保它是合适的单个数字,例如“1”或“273”或某些此类数字。
您可以使用所谓的try-catch
块,它会尝试执行此操作,但如果失败则可以定义替代行为。例如;
try{
int sample = Integer.parseInt(jTextField1.getText());
int foo = Integer.parseInt(jTextArea1.getText());
} catch (NumberFormatException e){
System.out.println("The text fields do not contain an appropriate number");
}
上面的示例尝试将这两个Strings
解析为数字,但如果失败,则捕获NumberFormatException
抛出然后运行catch
块。
在我看来,您需要对“异常处理”进行一些阅读。我希望这会有所帮助。
我编写了一个示例,说明您在下面尝试实现的目标;
public String randomiseStringOfNumbers(String numbers) throws NumberFormatException{
String[] sNumbers = numbers.split(" ");
ArrayList<Integer> iNumbers = new ArrayList<Integer>();
for(String s : sNumbers){
iNumbers.add(Integer.parseInt(s));
}
Collections.shuffle(iNumbers);
String sn = "";
for(Integer i : iNumbers){
sn = sn + i.toString() + " ";
}
return sn;
}
此方法采用String
中由空格分隔的一组数字。如果解析为此方法的String
不遵循该格式,则该方法将像以前一样抛出NumberFormatException
。