问题描述
我目前正在处理涉及(对象数组)概念的作业。
为了进一步解释,我主要使用了三种方法:main-一种在填充后返回数组的方法-一种在填充后处理数组的方法。
,我有一个名为“ Commands”的文本文件,该类由“ Scanner”类和“ File”类读取,该文本文件通过读取该文件中的命令为我提供了应该执行的命令-例如-“ FILL_ARRAY”,它应该通过转到负责填充数组的方法来执行此任务。
要在这些订单之间切换,我使用switch(command) { }
,其中command
是保存文件中订单的字符串。
问题是,当我用第一种方法完成填充数组时,我return
将该数组分配给已在主方法中创建的数组,那么当我将其发送给第二种方法时, command
读取了单词-例如-“ PRINT_ARRAY”,因此我应该将其发送到要在第二种方法中打印的数组,但是该方法指出该数组指向空值。
我在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
那我该怎么办?
解决方法
我明白了为什么.. :) 我在WHILE LOOP中将数组的初始化添加为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