【问题标题】:Profiling exercise with arrays in Java [closed]使用 Java 中的数组进行分析练习 [关闭]
【发布时间】:2021-04-19 10:41:56
【问题描述】:

我想创建一个 5 乘以 10 个字符的代码,每个字符都可以被认为是一个人的身份。稍后,我将一一查看这些人的身份,并创建与他们的代码相关的特征。例如,如果代码以字母 x 开头,则为女性,如果以 y 和 z 开头,则为男性。我正在尝试使用数组来执行此操作,但是在创建此人口时,我将在哪里存储 5 个不同的代码,然后如何逐个查看 ID。

public static void main(String[] args) {
    int max = 5;
    compAlien[] alien;
    alien = new compAlien[max];
    String[] letter = {"X", "Y", "Z"};
    String[] str = new String[max];
    for (int i = 0; i < 10; i++) {
        Random rand = new Random();
        int w = rand.nextInt(letter.length);
        System.out.print(letter[w]);
    }
    System.out.println("");
    int i = 1;
    while (max > 0) {
        System.out.println("ID:" + i + ", ");
        if (i == max) {
            break;
        }
        i++;
    }
}

我也这样尝试过,但也没有发生。

public static void main(String[] args) {
    int max = 5;
    String[] IDs = new String[max];
    String[] letter = {"X", "Y", "Z"};
    for (int j = 0; j < max; j++) {
        int z = 0;
        for (int i = 0; i < 10; i++) {
            Random rand = new Random();
            int w = rand.nextInt(letter.length);
            IDs[z] += letter[w];
        }
        z++;
    }
    System.out.println(IDs[0]);
    System.out.println(IDs[1]);
    System.out.println(IDs[2]);
    System.out.println(IDs[3]);
    System.out.println(IDs[4]);
}

【问题讨论】:

    标签: java arrays arraylist multidimensional-array


    【解决方案1】:

    你是在正确的方式。但是你破坏了你的一些变量。

    public static void main(String[] args) {
        int max = 5;
        String[] IDs = new String[max];
        String[] letter = {"X", "Y", "Z"};
        for (int j = 0; j < max; j++) {
            IDs[j] = "";
            for (int i = 0; i < 10; i++) {
                Random rand = new Random();
                int w = rand.nextInt(letter.length);
                IDs[j] += letter[w];
            }
        }
        System.out.println(IDs[0]);
        System.out.println(IDs[1]);
        System.out.println(IDs[2]);
        System.out.println(IDs[3]);
        System.out.println(IDs[4]);
    }
    

    您需要使用jIDs 联系,而不是使用新的zz 甚至可以被消除。 现在你得到了 5 个想要的字符串。我插入了IDs[j] = "",因为您添加了带有+= 的字母。这意味着你会得到像nullXYZXYZXZYX 这样的字符串。 所以我们从一个干净的字符串开始。 编码愉快。

    更新您的后续问题: “现在我将在另一种方法中使用这些IDs 来确定性别。我怎样才能在那里调用这个方法,我可以遵循什么?”

    有一些方法:

    (a) 您可以使用IDs 作为函数调用的参数:

    private static void doSomething(String[] IDs) {
        for (String ID : IDs) {
            System.out.println(ID);
        }
    }
    

    这样您就可以删除System.outs 并且只使用一个调用:

    doSomething(IDs);
    

    (b) 您可以将IDs 的定义转移到main 之外并使其成为类定义。这样您就不需要将变量IDs 交给您可能使用的每个函数。每个功能都可以使用数据本身。但要注意:如果不是非常需要的话,现在使用全局变量是一个“nono”。我倾向于(a)。

    【讨论】:

    • 现在我将在另一种方法中使用这些 ID 来确定性别。我怎样才能在那里调用这个方法,我可以遵循什么?
    • 将答案添加到我的原始帖子中。希望对您有所帮助。
    猜你喜欢
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 2011-03-25
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    相关资源
    最近更新 更多