【问题标题】:Make a Random Integer from String list从字符串列表中生成一个随机整数
【发布时间】:2014-05-29 08:26:58
【问题描述】:

我正在尝试随机化一些已转换为整数的字符串。
但问题是,我的编码引发了以下异常:

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");                    
  }

我做错了什么?

【问题讨论】:

  • 预期结果是什么?您在每个循环中覆盖 jTextField 中的文本
  • 从这篇文章中,不清楚您要的是什么。
  • 错误是什么...
  • 嗨,欢迎来到 Stack Overflow。为了提供帮助,我们需要更多细节。你得到了什么错误?您的预期结果是什么,正在发生什么?
  • 永远不要通过说来自 java.swing、java.lang 等的一些错误来忽略错误...查看您的错误并将其发布在这里

标签: java string random integer


【解决方案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

【讨论】:

  • 是的,你是对的,我正在尝试随机化 "1 2 3 4 5" 我该怎么办??
  • @Engkid - 我将在我的答案中发布一些代码,这些代码可以满足您的要求,因此您可以看到一个工作示例。
  • 我会非常感谢你,是的,这就是我要做的事情,大声笑,我的代表上升了 :)
猜你喜欢
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 2016-04-11
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多