Java 从另一个 class 方法中访问数组
Java access array from inside another class method
我需要在不使用 getter 的情况下访问位于不同 class 中的数组。我有一个扫描仪传递给一个创建数组的方法,然后调用一个方法来递归地用文件中的数据填充数组。然后我需要访问 toString 方法并使用来自 class (Student[] list).
的数组
Public class Test
{
public static void main(String[] args) throws IOException
{
int actual = 0;
File input = new File("input.txt");
BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));
Scanner scan = new Scanner(input);
C155.createList(scan);
actual = C155.getSize();
// writer.write(C155.toString(C155.list, ??????));
writer.close();
}
}
public class C155 {
public static final int MAXSIZE = 22;
private static int size = 0;
public static Student[] createList(Scanner scan)
{
Student[] list = new Student[MAXSIZE];
return populateList(list, scan);
}
private static Student[] populateList( Student[] list, Scanner scan )
{
Student s;
if ( size < MAXSIZE && scan.hasNext() )
{
s = new Student(scan.next(), scan.next(),scan.next(),
scan.nextDouble(), scan.nextInt());
list[size] = s;
size++;
System.out.println(s);
return populateList(list, scan);
}
else
return list;
}
public static String toString(Student[] list, int n)
{
String all= "All Students \n";
for (int x = 0; x <= n; x++)
{
all += list[x].toString() + "\n";
}
return all;
}
我需要从测试中调用 toString 方法(需要 Student[] 列表)class,但我真的不知道除了创建 get 方法之外的最佳方法。
请注意,class C155 中的所有方法都是静态的,这可能不是最佳方法。
不过,为了回答您的问题,您的方法 createList(Scanner scan) 具有 return 类型的 Student[]。这就是您在 main 方法中获取对该数组的引用的地方。
Scanner scan = new Scanner(input);
Student[] studentArray = C155.createList(scan); <------
actual = C155.getSize();
writer.write(C155.toString(studentArray, studentArray.length())); <------
writer.close();
如果 return 通过方法访问列表,为什么需要访问列表?只需这样做:
Student[] list = C155.createList(scan);
writer.write(C155.toString(list, list.length()));
我需要在不使用 getter 的情况下访问位于不同 class 中的数组。我有一个扫描仪传递给一个创建数组的方法,然后调用一个方法来递归地用文件中的数据填充数组。然后我需要访问 toString 方法并使用来自 class (Student[] list).
的数组Public class Test
{
public static void main(String[] args) throws IOException
{
int actual = 0;
File input = new File("input.txt");
BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));
Scanner scan = new Scanner(input);
C155.createList(scan);
actual = C155.getSize();
// writer.write(C155.toString(C155.list, ??????));
writer.close();
}
}
public class C155 {
public static final int MAXSIZE = 22;
private static int size = 0;
public static Student[] createList(Scanner scan)
{
Student[] list = new Student[MAXSIZE];
return populateList(list, scan);
}
private static Student[] populateList( Student[] list, Scanner scan )
{
Student s;
if ( size < MAXSIZE && scan.hasNext() )
{
s = new Student(scan.next(), scan.next(),scan.next(),
scan.nextDouble(), scan.nextInt());
list[size] = s;
size++;
System.out.println(s);
return populateList(list, scan);
}
else
return list;
}
public static String toString(Student[] list, int n)
{
String all= "All Students \n";
for (int x = 0; x <= n; x++)
{
all += list[x].toString() + "\n";
}
return all;
}
我需要从测试中调用 toString 方法(需要 Student[] 列表)class,但我真的不知道除了创建 get 方法之外的最佳方法。
请注意,class C155 中的所有方法都是静态的,这可能不是最佳方法。
不过,为了回答您的问题,您的方法 createList(Scanner scan) 具有 return 类型的 Student[]。这就是您在 main 方法中获取对该数组的引用的地方。
Scanner scan = new Scanner(input);
Student[] studentArray = C155.createList(scan); <------
actual = C155.getSize();
writer.write(C155.toString(studentArray, studentArray.length())); <------
writer.close();
如果 return 通过方法访问列表,为什么需要访问列表?只需这样做:
Student[] list = C155.createList(scan);
writer.write(C155.toString(list, list.length()));