访问数组索引OutSide for循环

时间:2012-03-18 07:25:10

标签: java

我在访问for循环外的i值时遇到问题。起初我想从用户那里获得5个名字,然后想要使用数组在屏幕上打印所有这些名称。请帮助。

public class Student {

    public static void main(String[] args) {

        Scanner input=new Scanner(System.in);

        String []Name;
        Name=new String[5];

        System.out.println("Please Enter The Names Of 5 Students: ");

        //INPUTS 5 STUDENTS NAME FROM USER
        for(int i=0; i<5; i++)
        {
            System.out.println("Enter The Name of student: "+(i+1));
            Name[i]=input.nextLine();
        }

        //Prints All The Students Names
        System.out.println("The Name of student: "+(i+1)+" is : "+ Name[i]);
    }
}

7 个答案:

答案 0 :(得分:3)

要打印所有学生的姓名,请执行与输入相同的操作 -

// Prints all the student's name
for(int j=0; j<5; j++)
{
    System.out.println("The name of the " + 
                        (j+1) + "-th student is: " + 
                        Name[j]);
}

顺便说一句,您将无法访问输入循环之外的变量i。该循环内部为scoped

答案 1 :(得分:1)

您期望i的值超出循环范围?该变量不再在范围内......从逻辑上讲,它不存在。

听起来你想要一个第二个循环来输入它们后打印它们。你已经有了一个输入循环,所以你应该可以在第二个循环上建模。

答案 2 :(得分:0)

您在访问i的值时遇到问题,因为您正在循环外打印值。所以把它放在循环中,如上面的海报所做的那样

答案 3 :(得分:0)

标识符“i”的范围仅限于for循环,这意味着当for循环“i”的代码退出时,int“i”仅存在于for循环中。

第二件事是如果你通过在for循环之外声明这个扩展你的“i”范围,你仍然没有获得所有的数组元素,因为你没有循环每个元素。 你需要遍历每个元素。

答案 4 :(得分:0)

在循环之外,i的值为5,但是你的数组是5个元素(你已经在循环中填充了它的第0-4个索引)。

答案 5 :(得分:0)

不是答案,因为我认为Jon的答案很好。但是这里有几个Java风格指南。

声明数组

在java中的数组声明中,[]附加到类型而不是变量。

例如

String[] arr; // not String []arr;

这是因为数组是第一类对象而不是指针(如在C / C ++中)。因此,声明中的所有变量都将具有完全相同的类型。

那是:

int[] arr1, arr2; // declares two int arrays

与C / C ++相反,它会改为声明一个名为arr1的int数组和一个名为arr2的int数组(从技术上讲,它不会因为C / C ++的语法被破坏而不会。)

变量名称

Java中变量名称的约定是使用驼峰大小写并以小写字母开头。你会在你的问题中注意到语法高亮显示器以蓝色突出显示名称。这是因为它认为Names是一个类名而不是一个变量名。对于类,惯例是再次使用camel case,但以大写字母开头。

例如

MyClass myVariable;

答案 6 :(得分:0)

如果在循环内声明了变量,则其作用域仅在循环中。你应该做的是这样的事情:

public class Student {

public static void main(String[] args) {

    Scanner input=new Scanner(System.in);

    String []Name=new String[6];
    int i;

    System.out.println("Please Enter The Names Of 5 Students: ");

    //INPUTS 5 STUDENTS NAME FROM USER
    for(i=1; i<=5; i++)
    {
        System.out.println("Enter The Name of student : "+i+" : ");
        Name[i]=input.nextLine();
    }

    for(i=1;i<=5;i++)
    System.out.println("The Name of student: "+(i+1)+" is : "+ Name[i]);
}
} 

此外,请注意我已经声明了大小为6的数组。这样做是为了从序列号1中取出该学生的名字。即Name[0]处的值将是一些垃圾值或\你可以把它分配给你想要的任何价值。谁在乎?我们从第一个位置使用阵列。

第一个值位于Name[1],最后一个值位于Name[5]