【问题标题】:JAVA: storing input into arrayJAVA:将输入存储到数组中
【发布时间】:2010-06-14 04:39:48
【问题描述】:

我需要编写一个程序,该程序会生成随机字母,我需要将这个随机字符存储到一个数组中

        char[] arrayRandom = new char[10];


        for (int i = 0; i < 8; i++) {
            randomNumLet = (generator.nextInt(20) + 1);
            System.out.print(arrayRandomLetter[randomNumLet] + " ");
            arrayRandomLetter[randomNumLet] = arrayRandom[i];
        }

我的代码有什么问题吗? 因为当我运行它并打印数组时,我得到了数组中所有值的框,并且有一些字母这行代码无法打印

            System.out.print(arrayRandomLetter[randomNumLet] + " ");

谢谢

【问题讨论】:

    标签: java user-input storing-data


    【解决方案1】:

    您正在为arrayRandomLetter 的元素分配来自arrayRandom 的值。因为你从不初始化arrayRandom,所以它的值都是0。0不是可打印字符的值,因此是方框。

    选择随机字符的简单方法如下:

    String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    char randomChar = chars.charAt(random.nextInt(chars.length()));
    

    【讨论】:

    • 那么,我如何初始化 arrayRandom ?它不应该是一个空数组,因为我要在里面存储值吗?
    • 我不知道,你是要在里面存储值吗?根据您的代码,您当然没有表现出这样做的意图(提示:在您的代码中,arrayRandom 出现在赋值的左侧?)
    • 哦,如果我想在数组中添加一个值,我已经明白你的意思了,我应该只放在左侧而不是右侧?非常感谢 =)
    【解决方案2】:

    您正在尝试在分配arrayRandomLetter 之前打印它。

    【讨论】:

    • 这也是,虽然换行不会有什么不同:-)
    • @Mark - 输出会有所不同(8 个空格)。这是不正确的,但它不同。
    • 我已经通过在数组中输入字母来分配arrayRandomletter,抱歉数组应该是8而不是10
    • @Stephen C: No. arrayRandomLetter[randomNumLet]arrayRandomLetter[randomNumLet] = arrayRandom[i] 行之前为 0,之后为 0。因此,对于这个特定示例,println 是否出现在该行之前或之后都没有区别。实际上,这假设这些元素之前没有被赋值。如果他们有,那么考虑到这段代码,将 println 留在原处可以说是更正确的:-)。
    • @Stephen:我当然做到了,如果您将 println 行的位置与分配给 arrayRandomLetter 的行切换,这没有任何后果。他们都还在循环中。您显然不明白我的建议,但请阅读我的 cmets 并再试一次。您将像现在一样打印(char)0 + " " 8 次,如果您切换这两行的位置,您将打印(char)0 + " " 8 次。
    【解决方案3】:

    我不会给你答案,但我会给你一个提示:

    (char)('A' + 1) is 'B'
    

    @fastcodejava 的回答解释了为什么你会看到“盒子”——渲染 ASCII NUL 字符。

    @Mark Peters 也是正确的,但这不是最简单的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 2013-12-31
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      相关资源
      最近更新 更多