Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中如何从一个数组到另一个数组获取随机值_Java_Arrays_Random_Indexoutofboundsexception - Fatal编程技术网

java中如何从一个数组到另一个数组获取随机值

java中如何从一个数组到另一个数组获取随机值,java,arrays,random,indexoutofboundsexception,Java,Arrays,Random,Indexoutofboundsexception,我想从char[]元音和char[]辅音到char[]firstName和char[]lastName中获取一个随机数组值 我的IDE(Eclipse)没有显示任何错误 firstName[i]=辅音[random.nextInt(辅音.length)] 但是,当运行代码时,我会得到错误 我该如何修正这句话 // http://www.javapractices.com/topic/TopicAction.do?Id=62 import java.util.Random; public cla

我想从
char[]元音
char[]辅音
char[]firstName
char[]lastName
中获取一个随机数组值

我的IDE(Eclipse)没有显示任何错误

firstName[i]=辅音[random.nextInt(辅音.length)]

但是,当运行代码时,我会得到错误

我该如何修正这句话

// http://www.javapractices.com/topic/TopicAction.do?Id=62
import java.util.Random;

public class _001NameGenerator {

    public static void main(String[] args) {
        Random random = new Random();

        int firstNameLength = 7; // fixed length, not "random"
        int lastNameLength = 5;  

        System.out.println("Your firstname will be "+firstNameLength+" and you lastname "+lastNameLength+" characters long.");

        char[] vowel = {'a', 'e', 'i', 'o', 'u', 'y'};      
        char[] consonant = {'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'z'};

        char[] firstName = new char[firstNameLength];
        char[] lastName = new char[lastNameLength];


        boolean wechsel = true;

        for (int i = 0; i < firstNameLength; i++) {

            if (wechsel == true){

                firstName[i]=consonant [random.nextInt(20)];  // length of consonant array
                wechsel = false;

            } else {

                firstName[i]=vowel [random.nextInt(6)]; // length of vowel array
                wechsel = true;
            }

        }   

        for (int i = 0; i < lastNameLength; i++) {

            if (wechsel == true){

                lastName[i]=consonant [random.nextInt(20)];
                wechsel = false;

            } else {

                lastName[i]=vowel [random.nextInt(6)];
                wechsel = true;
            }

        }   

        System.out.println(firstName + "\n" + lastName);

    }

}
//http://www.javapractices.com/topic/TopicAction.do?Id=62
导入java.util.Random;
公共类名称生成器{
公共静态void main(字符串[]args){
随机=新随机();
int firstNameLength=7;//固定长度,而不是“随机”
int lastname长度=5;
System.out.println(“您的名字将是“+firstNameLength+”而您的lastname将是“+lastNameLength+”字符长。”);
char[]元音={'a','e','i','o','u','y'};
char[]辅音={'b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','z'};
char[]firstName=新字符[firstNameLength];
char[]lastName=新字符[lastNameLength];
布尔wechsel=真;
for(int i=0;i
答案显而易见:这两个数组的长度都为零:

    char[] firstName = {};
    char[] lastName = {};
这两行生成空列表,因此无论何时尝试添加内容,它都会给出一个
ArrayIndexOutOfBoundsException:0

由于您具有上面的随机长度,请尝试以下方法:

char[] firstName = new char[firstNameLength];
char[] lastName = new char[lastNameLength];

另外,如果您事先不知道数组的长度,可以使用ArrayList,它是为这些目的创建的。

您已经将
firstName
lastName
初始化为零长度数组。因此,在第一次迭代中,您尝试为
firstName[0]
分配一个值,但是“0”对于空数组是无效的索引,因此出现了异常

应使用以下长度初始化数组:

char[] firstName = new char[firstNameLength];
char[] lastName = new char[lastNameLength];

firstName
lastName
数组声明为空的零长度数组。您应根据您的代码声明如下:

char[] firstName = new char[firstNameLength];
char[] lastName = new char[lastNameLength];

这会阻止您从BoundsException获取ArrayIndexOutOfBoundsException
可以,为什么您认为可以以某种方式使用它
someArray[0]
?你知道数组有固定长度吗?嗨,我不知道固定长度。我只是想把它初始化一下。然而,不幸的是,给它一个
firstnamelinght
的长度并不能解决这个问题。实际上它解决了这个问题,但显然你还有另一个问题。那么现在的错误消息是什么呢?线程“main”java.lang.ArrayIndexOutOfBoundsException:8在_01NameGenerator.main(_01NameGenerator.java:27)中出现异常,或者线程“main”java.lang.ArrayIndexOutOfBoundsException:8在_01NameGenerator.main(_01NameGenerator.java:32)中出现异常这意味着您的循环正在尝试访问数组绑定之外的元素。尝试正确限制
[i]
[random.nextInt(consonant.length)]
的范围(使用正确数组的长度)。谢谢。我用
char[]firstName=new char[firstNameLength]尝试了你的建议。数组现在具有正确的长度。但我也犯了同样的错误。我将进一步检查代码attentively@grerrg我已经试过了你的主要帖子的编辑代码,现在似乎没有错误。唯一需要添加的是打印行中字符串的字符数组。您可以通过将打印更改为
System.out.println(新字符串(名字)+“\n”+新字符串(名字))
char[] firstName = new char[firstNameLength];
char[] lastName = new char[lastNameLength];
char[] firstName = new char[firstNameLength];
char[] lastName = new char[lastNameLength];