【问题标题】:How do I make the generated numbers show at once?如何使生成的数字立即显示?
【发布时间】:2014-10-16 11:10:12
【问题描述】:
import java.util.*;
import javax.swing.JOptionPane;
public class p1 
{
public static void main(String[] args) 
{
    int size = 50;

    ArrayList<Integer> list = new ArrayList<Integer>(size);
    for(int i = 1; i <= size; i++) 
    {
        list.add(i);
    }

    Random rand = new Random();
    while(list.size() > 0) 
    {
        int index = rand.nextInt(list.size());
        JOptionPane.showMessageDialog(null, "Selected: "+list.remove(index));
    }
}
}

当我运行这个程序时,我生成的随机数都显示在单独的消息框中,我如何更改代码以便它在一个消息框中显示数组,即。您生成的数字是:1、4、5、6、33 等等.

【问题讨论】:

  • 首先:创建一个包含所有数字的字符串,而不是直接打印它们。第二:将50 设置为10 以仅生成10 数字 - 就这么简单。
  • 创建一个字符串,这将是您的最终结果,在您的 while 循环中将 index(converted to string) 的值附加到该字符串,在 while 循环完成后,您可以显示消息框中的那个字符串:)
  • 首先我不明白你在做什么。您有从 1 到 50(大小为 50)的数字列表,并且您正在尝试生成 1 到 50 之间的随机数,直到列表变为空。
  • 显示消息框的方法应该在循环外,在循环内你应该构造一个字符串,在其中用逗号分隔符附加到数字。
  • +1 为一个不错的MCVE

标签: java arrays loops random joptionpane


【解决方案1】:

除了这样做:

JOptionPane.showMessageDialog(null, "Selected: "+list.remove(index));

将 list.remove(index) 放入一个字符串变量中

然后在循环之后放

  JOptionPane.showMessageDialog(null, "Selected: "+string variable);

您的错误只是将对话框置于循环之外。

public static void main(String[] args) 
{
    int size = 10;

    ArrayList<Integer> list = new ArrayList<Integer>(size);
    for(int i = 1; i <= size; i++) 
    {
        list.add(i);
    }

    Random rand = new Random();
    String buffer = "";
    while(list.size() > 0) 
    {
        int index = rand.nextInt(list.size());
        buffer += ","+list.remove(index);

    }
    JOptionPane.showMessageDialog(null, "Selected: "+buffer);
}

编辑答案:必须设置两个变量的大小和范围

public static void main(String[] args) 
{
    int size = 10;
    int range = 50;

    ArrayList<Integer> list = new ArrayList<Integer>(size);
    Random rand = new Random();
    for(int i = 1; i <= size; i++) 
    {
        list.add( rand.nextInt(range));
    }


    String buffer = "";
    while(list.size() > 0) 
    {
        int index = 0;

        if(list.size() != 1)
               buffer += list.remove(index)+",";
        else if(list.size() == 1)
             buffer += list.remove(index)+",";
        index++;
    }
    JOptionPane.showMessageDialog(null, "Selected: "+buffer);
}

【讨论】:

  • 好的,谢谢,还有没有办法在代码中添加一种方法来更改生成的数字数量以及将分别生成数字的范围,因为目前“大小”负责两者。
【解决方案2】:
import java.util.*;
import javax.swing.JOptionPane;

public class test {
    public static void main(String[] args) {
        int size = 50;

        ArrayList<Integer> list = new ArrayList<Integer>(size);
        for (int i = 1; i <= size; i++) {
            list.add(i);
        }

        Random rand = new Random();

        StringBuilder sb = new StringBuilder();
        while (list.size() > 0) {
            int index = rand.nextInt(list.size());

            sb.append(list.remove(index) + ",");
            sb.deleteCharAt(sb.length() - 1);

        }

        JOptionPane.showMessageDialog(null, "Selected: " + sb.toString());
    }
}

【讨论】:

    【解决方案3】:

    我相信这就是你的要求。

    Random random = new Random();
    
    StringBuffer buff = new StringBuffer();
    for (int index = 1; index <= 50; index++) {
        buff.append(random.nextInt(50));
        if (index % 10 == 0) {
        buff.append('\n');
        } else {
        buff.append(',');
        }
    
    }
    buff.delete(buff.length() - 2, buff.length());
    
    System.out.println(buff.toString());
    JOptionPane.showMessageDialog(null, "Selected: " + buff.toString());
    

    【讨论】:

      猜你喜欢
      • 2014-09-24
      • 2016-04-03
      • 1970-01-01
      • 2011-06-17
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多