用户输入后打印数组

时间:2015-06-26 22:32:49

标签: java arrays printing

我正在处理一个类,该类将获取用户输入以将值分配给在源类中创建的对象。然后将这些对象添加到数组中,然后在其上打印值。然而,"列表"打印下: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 + "");
}
}

2 个答案:

答案 0 :(得分:2)

首先,您在循环中实例化数组,这意味着每次循环运行时,它都会创建一个新数组而不是更新旧数组。然后,一旦你离开你的循环,你就离开它的“范围”。这意味着您在循环中声明的所有内容都无法在外部使用。解决方案是在循环外声明您的数组。

java中的每个块都有自己的范围(通过括号定义)。虽然您可以访问已在块内部声明的变量,但它在其中不起作用;如你看到的。只是谷歌java范围,你会了解更多。希望有所帮助;)

答案 1 :(得分:1)

您需要在类名称中返回名字,姓氏和邮政编码的方法,因为如果您只是使用:

System.out.println(print +“”)

您正在打印对象Name,而不是表示对象中保存的属性的String。

例如,您可以在类名称中使用该方法:

String getFirst()
{
       return this.first;
}

您的班级Nametester中的最后一行可以是

System.out.println(print.getFirst()+“”);