Java 如何从for循环打印数组?

Java 如何从for循环打印数组?,java,arrays,loops,for-loop,multidimensional-array,Java,Arrays,Loops,For Loop,Multidimensional Array,编写简历生成器。我被困在一个描述部分,该部分必须对应于每个学校,但对用户输入是可变的(用户决定每个学校有多少描述点)。每次尝试从此循环打印时,都会出现一个错误,即找不到变量。如何修复 输入学校的循环: //numberOfSchools is int entered by user for (int i = 0; i < numberOfSchools; i++) { System.out.println("What was school " + (i + 1) + "

编写简历生成器。我被困在一个描述部分,该部分必须对应于每个学校,但对用户输入是可变的(用户决定每个学校有多少描述点)。每次尝试从此循环打印时,都会出现一个错误,即找不到变量。如何修复

输入学校的循环:

//numberOfSchools is int entered by user

for (int i = 0; i < numberOfSchools; i++) {
        System.out.println("What was school " + (i + 1) + " name?");
        schoolInfo[i][0] = scan.nextLine();
        System.out.println("Where was " + schoolInfo[i][0] + " ?");
        schoolInfo[i][1] = scan.nextLine();
        System.out.println("What was your start date at " + schoolInfo[i][0]);
        schoolInfo[i][2] = scan.nextLine();
        System.out.println("What was your end date at " + schoolInfo[i][0] +
                "enter 'present' if still attending");
        schoolInfo[i][3] = scan.nextLine();

        System.out.println("How many description points would you like to add for School" + i);
        int eduDescAmount = scan.nextInt();
        String eduDesc[][] = new String[numberOfSchools][eduDescAmount];
        scan.nextLine();
        for(int j = 0; j < eduDescAmount; j++){
            System.out.println("Enter detail " + (j+1) + " for " + schoolInfo[i][0]);
            eduDesc[i][j] = scan.nextLine();
        }
    }
//用户输入的numberOfSchools为int
for(int i=0;i
打印循环:

for (int r = 0; r < schoolInfo.length; r++) {
        for (int q = 0; q < schoolInfo.length; q++){
            System.out.println(eduDesc[r][q]);
        }
for(int r=0;r
eduDesc
在每次迭代中都会在
for
循环中再次声明。它也只在循环内部可见。下面是正确结构的外观:

String[][] eduDesc = new String[numberOfSchools][];
for (int i = 0; i < numberOfSchools; i++) {
    ...
    int eduDescAmount = scan.nextInt();
    eduDesc[i] = new String[eduDescAmount];
    ...
}
String[][]eduDesc=新字符串[numberOfSchools][];
for(int i=0;i
eduDesc
在每次迭代中都会在
for
循环中再次声明。它也只在循环内部可见。下面是正确结构的外观:

String[][] eduDesc = new String[numberOfSchools][];
for (int i = 0; i < numberOfSchools; i++) {
    ...
    int eduDescAmount = scan.nextInt();
    eduDesc[i] = new String[eduDescAmount];
    ...
}
String[][]eduDesc=新字符串[numberOfSchools][];
for(int i=0;i
打印循环不在
eduDesc
变量的作用域内。每次打开块(例如,在方法体、循环或条件中)时,您都会输入一个内部作用域。这可以访问外部作用域中的所有变量,但一旦退出块,内部定义的任何内容都将不在作用域内


通过在第一个循环之前声明,将
eduDesc
变量声明在两个循环都可以访问的范围内,您将能够访问该变量。

eduDesc
变量不在打印循环的范围内。每次打开块时,例如在方法体、循环或条件中,您都会输入一个内部变量它可以访问外部作用域中的所有变量,但一旦退出该块,内部定义的任何内容都将不在作用域中


通过在第一个循环之前声明
eduDesc
变量,将其声明在两个循环都可以访问的范围内,您将能够访问它。

我猜问题在于
eduDesc
变量的范围内。当您写入:

for (int i = 0; i < numberOfSchools; i++) {
    /* Your Code */
    int eduDescAmount = scan.nextInt();
    String eduDesc[][] = new String[numberOfSchools][eduDescAmount]; // This means eduDesc[][] is declared as a local variable
    /* More code */
}

希望答案是这样。

我想问题在于
eduDesc
变量的范围。当您编写:

for (int i = 0; i < numberOfSchools; i++) {
    /* Your Code */
    int eduDescAmount = scan.nextInt();
    String eduDesc[][] = new String[numberOfSchools][eduDescAmount]; // This means eduDesc[][] is declared as a local variable
    /* More code */
}


希望这能回答您的问题。

您有什么问题?需要澄清您的问题。无法理解您需要什么。需要更多的代码澄清。您有什么问题?需要澄清您的问题。无法理解您需要什么。需要更多的代码澄清。替换“for”()是否可行“使用while循环进行循环?这不起作用,因为在循环之前,
edudescument
是未知的。@EmanuelSaunders如果要替换循环,您需要了解为什么要这样做。使用while循环可以有相同的行为,但在外部范围中仍然需要eduDesc变量(在类级别或在执行两个循环的方法内).既然你有一个预先确定的迭代次数,那么for仍然是更好的选择。我希望有一种替代方法,我可以要求循环中的用户在问题之后定义“edu desc”。似乎不是这样。如果你想在循环中定义edu desc并仍然使用它,你需要执行prin在第一个循环中也是如此,因此eduDesc在打印范围内。替换“for()是否可行?”“使用while循环进行循环?这不起作用,因为在循环之前,
edudescument
是未知的。@EmanuelSaunders如果要替换循环,您需要了解为什么要这样做。使用while循环可以有相同的行为,但在外部范围中仍然需要eduDesc变量(在类级别或在执行两个循环的方法内).既然你有一个预先确定的迭代次数,那么for仍然是更好的选择。我希望有一种替代方法,我可以要求循环中的用户在问题之后定义“edu desc”。似乎不是这样。如果你想在循环中定义edu desc并仍然使用它,你需要执行prin在第一个循环中也是如此,因此eduDesc在打印范围内。与另一个答案相同的问题,
eduDescAmount
在循环之前是未知的。很有用,但在问完所有其他问题后,我需要询问描述点的数量,并向每个学校提出。例如,关于学校1:x的信息,y、 z;用户希望添加2个详细信息:(用户输入)(用户输入)学校2:x,y,z;用户希望添加1个详细信息: