我在访问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]);
}
}
答案 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]
。