2012-03-18 133 views
1

我在访问for循环外的i值时遇到问题。起初我想从用户那里得到5个姓名,之后想用数组在屏幕上打印所有的姓名。请帮忙。访问数组索引OutSide For循环

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]); 
    } 
} 

回答

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

你认为i的值在循环之外?变量不在范围内......逻辑上说,它不存在。

这听起来像是你想要一个第二个循环打印输入后的值。你已经有了一个输入循环,所以你应该能够建模你的第二个循环。

0

您在访问我的值时遇到问题,因为您正在循环外打印值。所以,把在循环由上述海报

0

标识符的范围做“i”是仅限于用于循环,这意味着整数“i”是仅在for循环时从循环代码退出“i”被破坏存在。

第二件事情是,如果你被外面的声明for循环拓宽你的“我”的范围,你仍然没有得到所有的数组元素,因为你不是循环的每个元素。 您需要遍历每个元素。

0

循环外,i的值是5,但是你的数组是5个元素(你已经填充内环路及其0-4th指数)。

0

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

声明阵列

在Java中的[]一个数组声明被附接到的类型和不变量。

例如。

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

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

即:

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

与之相对C/C++,其中这将代替声明整数称为ARR1和一个INT称为ARR2的一个阵列(以及技术上它不会作为语法被打破对C/C++)。

变量名

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

例如。

MyClass myVariable; 
+0

不完全正确:'int [] arr [];'是有效的,给你一个int [] [] – 2012-03-18 07:53:58

+0

@MPlatvoet所以初始类型指定了最小维数? – Dunes 2012-03-18 08:28:02

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]