【问题标题】:how to populate a 2d array with random alphabetic values from a range如何使用范围内的随机字母值填充二维数组
【发布时间】:2013-09-26 22:15:23
【问题描述】:

我对 java 编程相当陌生,我想创建两种方法: 方法 1 将生成一个 2d 数组 5*5 并用 a-e 之间的值填充它 方法 2 只会将结果打印到屏幕上 我理解使用两个 for 循环遍历数组并一次性打印它,但将它拆分让我有点困惑。 到目前为止,这是我的第一个方法

       public void create()
         {
              Random r = new Random();  
              char Type[] = {'a','c','e','d'};

             for (int i = 0; i<seats.length; i++)
             {
                 for (int j = 0; j<seats[i].length; j++)
                {
                    seats[i][j] = Type[r.nextInt(Type.length)];
                }
            }

         }

【问题讨论】:

  • 向我们展示你目前拥有的东西。

标签: java arrays random


【解决方案1】:

首先,您需要在方法之外创建数组。我建议使用全局变量来避免按值传递内存效率低下的问题。

 import java.util.Random;
 public class alpha_array
 {
     char array[][] = new char[5][5];
     Random rnd = new Random();

     public static void main(String[]args)
     {
         populate_array();
         print_array();
     }
 }

接下来您将需要您的两个功能。对于数组的填充,不要忘记在代码顶部导入 util:

populate_array():

public void populate_array()
{
    for(int i = 0; i < 5; i++)
    {
        for(int j = 0; j < 5; j++)
        {
            int x = rnd.nextInt(5); //0 to 4
            switch(x){
                case 0:{
                    array[i][j] = 'a';
                    break;
                }
                case 1:{
                    array[i][j] = 'b';
                    break;
                }
                case 2:{
                    array[i][j] = 'c';
                    break;
                }
                ...ETC
            }
        }
    }
}

最后只是模仿 print_array 方法的相同结构,只是使用:

System.out.print(array[i][j]);

对于每一行。希望这会有所帮助。

【讨论】:

  • 很好的答案,但考虑让 create 函数返回一个数组,而不是 void 并使用全局命名空间。此外,您可以使用字符算术而不是 switch 语句,例如array[i][j] = 'a' + rnd.nextInt(5);。最后,使用下划线命名对于 Java 来说是非标准的,骆驼大小写是首选,例如populateArray()populate_array().
  • increment1 的改进是显着的 - 我会听从他的建议。
猜你喜欢
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 2017-04-17
  • 2014-05-10
  • 1970-01-01
相关资源
最近更新 更多