提问人:NJ_GMD 提问时间:9/28/2020 最后编辑:NJ_GMD 更新时间:9/28/2020 访问量:33
将数组引用回主矩阵的问题
Problem with refrence the array back to main
问:
我目前正在处理一个处理(对象数组)概念的作业。
为了解释更多,我主要有三个方法: main - 一个在填充数组后返回数组的方法 - 一个在填充数组后处理数组的方法。
我有一个名为“Commands”的文本文件,我用类“Scanner”和类“File”读取它,这个文本文件通过读取这个文件中的顺序来为我提供我应该执行的命令 - 例如 - “FILL_ARRAY”,它应该通过转到负责填充数组的方法来完成此任务。
在我使用的这些订单之间切换,其中是保存文件中订单的字符串。switch(command) { }
command
问题是当我通过第一种方法完成填充数组时,我将数组分配给已在主中创建的数组中,然后我需要在读取单词时将其发送到第二种方法 - 例如 - “PRINT_ARRAY”所以我应该将其发送到数组以在第二种方法中打印, 但该方法显示数组指向 null。return
command
我在 外部声明了数组并在其中分配了一个 null,但是在开关内部,我分配了来自我首先声明的数组中第一个方法的数组,但它无法识别它。switch(command){ }
所以问题是,我如何在主数组中创建的数组中分配来自第一个方法的数组,以便我可以将其发送到第二个方法?
示例代码(在java中):
import java.util.*;
import java.io.*;
public class Question {
public static void main (String [] args){
//To read from file
File cmdFile = new File ("Commands");
Scanner readFromCmd = new Scanner (cmdFile);
do{
//declare the array
String [] nameArray = null;
//read from file
String commands = readFromCmn.nextLine();
//switch cases
switch (commands){
case "FILL_ARRAY":
nameArray = fillArray();
break;
case "PRINT_ARRAY":
printArray(nameArray); //PROBLEM HERE!
break;
case "QUIT":
System.exit(0);
}
}while (true);
}//main
public static String[] fillArray ()
{
//do task
return nameArray;
}
public static void printArray(String [] nameArray){
//do task
//PROBLEM HERE, WON'T SEE THE ARRAY AS A FILLED ONE, JUST SEE THE NULL.
//WHICH MEANS IT SILL INITIALIZED WITH NULL THAT I ASSIGNED TO THE ARRAY BEFORE THE SWITCH AND DIDN'T SEE
//THE CHANGES
}
}//class
那我该怎么办? 感谢
答:
0赞
NJ_GMD
9/28/2020
#1
我明白为什么了。:) 我在 WHILE 循环中将数组的初始化添加为 null!! 因此,每次代码再次经历循环时,它都会再次将其重新分配为 null。谢谢你们的努力,修复后的代码:
import java.util.*;
import java.io.*;
public class Question {
public static void main (String [] args){
//To read from file
File cmdFile = new File ("Commands");
Scanner readFromCmd = new Scanner (cmdFile);
//declare the array
String [] nameArray = null;
do{
//read from file
String commands = readFromCmn.nextLine();
//switch cases
switch (commands){
case "FILL_ARRAY":
nameArray = fillArray();
break;
case "PRINT_ARRAY":
printArray(nameArray); //PROBLEM HERE!
break;
case "QUIT":
System.exit(0);
}
}while (true);
}//main
public static String[] fillArray ()
{
//do task
return nameArray;
}
public static void printArray(String [] nameArray){
//do task
//PROBLEM HERE, WON'T SEE THE ARRAY AS A FILLED ONE, JUST SEE THE NULL.
//WHICH MEANS IT SILL INITIALIZED WITH NULL THAT I ASSIGNED TO THE ARRAY BEFORE THE SWITCH AND DIDN'T SEE
//THE CHANGES
}
}//class
评论
public static String[] fillArray () { //do task return nameArray; }
- 这到底是怎么编译的?,不在范围内nameArray