我正在处理一个类,该类将获取用户输入以将值分配给在源类中创建的对象。然后将这些对象添加到数组中,然后在其上打印值。然而,"列表"打印下:list告诉我需要初始化变量。为什么它没有意识到这是一个数组,即使它在我的do循环中似乎工作正常?
import java.util.Scanner;
import name.Names;
public class NameTester {
public static void main(String[] args) {
// TODO Auto-generated method stub
String entry;
Scanner firstscan = new Scanner(System.in);
Scanner lastscan = new Scanner(System.in);
Scanner codescan = new Scanner(System.in);
Scanner entryscan = new Scanner(System.in);
String first;
String last;
int code;
System.out
.println("This program will prompt you to input first name, +"
+ "last name, and zip code for an individual. Hit \"x\" when finished\n");
do {
System.out.println("Enter first name:");
first = firstscan.nextLine();
System.out.println("Enter last name:");
last = lastscan.nextLine();
System.out.println("Enter zip code:");
code = codescan.nextInt();
Names nm = new Names(first, last, code);
Names[] list = new Names[25];
int count = 0;
list[count] = nm;
count++;
System.out
.println("To quit hit \"X\" or any other key followed by enter to continue:");
entry = entryscan.nextLine();
} while (!(entry.equalsIgnoreCase("x")));
for (Names print : list)
System.out.println(print + "");
}
}
答案 0 :(得分:2)
首先,您在循环中实例化数组,这意味着每次循环运行时,它都会创建一个新数组而不是更新旧数组。然后,一旦你离开你的循环,你就离开它的“范围”。这意味着您在循环中声明的所有内容都无法在外部使用。解决方案是在循环外声明您的数组。
java中的每个块都有自己的范围(通过括号定义)。虽然您可以访问已在块内部声明的变量,但它在其中不起作用;如你看到的。只是谷歌java范围,你会了解更多。希望有所帮助;)
答案 1 :(得分:1)
您需要在类名称中返回名字,姓氏和邮政编码的方法,因为如果您只是使用:
System.out.println(print +“”)
您正在打印对象Name,而不是表示对象中保存的属性的String。
例如,您可以在类名称中使用该方法:
String getFirst()
{
return this.first;
}
您的班级Nametester中的最后一行可以是
System.out.println(print.getFirst()+“”);