Java 变量未初始化
我正试图写一个菜单来处理我的课堂作业。我有我想尝试的课程,但我似乎在创建菜单时遇到了问题Java 变量未初始化,java,switch-statement,Java,Switch Statement,我正试图写一个菜单来处理我的课堂作业。我有我想尝试的课程,但我似乎在创建菜单时遇到了问题 switch(choice) { case 1: System.out.print("Please enter a filename: "); filename = option.next(); //creating objects of the file manager to open the required files F
switch(choice)
{
case 1:
System.out.print("Please enter a filename: ");
filename = option.next();
//creating objects of the file manager to open the required files
FileManager e = new FileManager("Z:\\Java\\College\\Robo-Reader\\src\\"+filename+".txt");
FileManager e1 = new FileManager("Z:\\Java\\College\\Robo-Reader\\src\\punctuation.txt");
//creating connection to the files
e.connectToFile();
e1.connectToFile();
//Reading the files
String[] fileToBeRead= e.readFile();
String[] punctMarks = e1.readFile();
//closing the files
e.closeReadFile();
e1.closeReadFile();
fileRead++;
break;
case 2:
if(fileRead == 0)
{
System.out.println("No file was read. Please open a file to correct this error:");
}
else
{
FindLan t3 = new FindLan(fileToBeRead);
t3.cLang();
}
break;
case 3:
if(fileRead == 0)
{
System.out.println("No file was read. Please open a file to correct this error:");
}
else
{
//Creating the object for the remove punctuation class
RemovePunct t1 = new RemovePunct(punctMarks, fileToBeRead);
//Calling the EndArray(Remove) method to clean an array of punctuation marks
String[] cleanWords = t1.EndArray();
for(int i=0; i<10; i++)
{
System.out.println(cleanWords[i]);
}
}
default:
System.out.println("Option is not available");
}
开关(选项)
{
案例1:
System.out.print(“请输入文件名:”);
filename=option.next();
//创建文件管理器的对象以打开所需文件
FileManager e=newFileManager(“Z:\\Java\\College\\Robo Reader\\src\\\”+filename+“.txt”);
FileManager e1=新的文件管理器(“Z:\\Java\\College\\Robo Reader\\src\\sportions.txt”);
//创建到文件的连接
e、 connectToFile();
e1.连接文件();
//读取文件
字符串[]fileToBeRead=e.readFile();
字符串[]putchmarks=e1.readFile();
//关闭文件
e、 closeReadFile();
e1.closeReadFile();
fileRead++;
打破
案例2:
如果(fileRead==0)
{
System.out.println(“未读取任何文件。请打开一个文件以更正此错误:”;
}
其他的
{
FindLan t3=新的FindLan(fileToBeRead);
t3.叮当声();
}
打破
案例3:
如果(fileRead==0)
{
System.out.println(“未读取任何文件。请打开一个文件以更正此错误:”;
}
其他的
{
//为“删除标点符号”类创建对象
RemovePunct t1=新的RemovePunct(点标记,fileToBeRead);
//调用EndArray(Remove)方法来清除标点符号数组
字符串[]cleanWords=t1.EndArray();
对于(int i=0;i将变量声明移到switch语句之外,如下所示:
FileManager e = null;
FileManager e1 = null;
String[] fileToBeRead;
String[] punctMarks;
switch(choice)
{
case 1:
System.out.print("Please enter a filename: ");
filename = option.next();
//creating objects of the file manager to open the required files
e = new FileManager("Z:\\Java\\College\\Robo-Reader\\src\\"+filename+".txt");
e1 = new FileManager("Z:\\Java\\College\\Robo-Reader\\src\\punctuation.txt");
//creating connection to the files
e.connectToFile();
e1.connectToFile();
//Reading the files
fileToBeRead= e.readFile();
punctMarks = e1.readFile();
//closing the files
e.closeReadFile();
e1.closeReadFile();
fileRead++;
break;
case 2:
if(fileRead == 0)
{
System.out.println("No file was read. Please open a file to correct this error:");
}
else
{
FindLan t3 = new FindLan(fileToBeRead);
t3.cLang();
}
break;
case 3:
if(fileRead == 0)
{
System.out.println("No file was read. Please open a file to correct this error:");
}
else
{
//Creating the object for the remove punctuation class
RemovePunct t1 = new RemovePunct(punctMarks, fileToBeRead);
//Calling the EndArray(Remove) method to clean an array of punctuation marks
String[] cleanWords = t1.EndArray();
for(int i=0; i<10; i++)
{
System.out.println(cleanWords[i]);
}
}
default:
System.out.println("Option is not available");
}
FileManager e=null;
FileManager e1=null;
字符串[]fileToBeRead;
字符串标记;
开关(选择)
{
案例1:
System.out.print(“请输入文件名:”);
filename=option.next();
//创建文件管理器的对象以打开所需文件
e=新文件管理器(“Z:\\Java\\College\\Robo Reader\\src\\”+filename+“.txt”);
e1=新的文件管理器(“Z:\\Java\\College\\Robo Reader\\src\\sportions.txt”);
//创建到文件的连接
e、 connectToFile();
e1.连接文件();
//读取文件
fileToBeRead=e.readFile();
punctMarks=e1.readFile();
//关闭文件
e、 closeReadFile();
e1.closeReadFile();
fileRead++;
打破
案例2:
如果(fileRead==0)
{
System.out.println(“未读取任何文件。请打开一个文件以更正此错误:”;
}
其他的
{
FindLan t3=新的FindLan(fileToBeRead);
t3.叮当声();
}
打破
案例3:
如果(fileRead==0)
{
System.out.println(“未读取任何文件。请打开一个文件以更正此错误:”;
}
其他的
{
//为“删除标点符号”类创建对象
RemovePunct t1=新的RemovePunct(点标记,fileToBeRead);
//调用EndArray(Remove)方法来清除标点符号数组
字符串[]cleanWords=t1.EndArray();
对于(int i=0;它的总体目标是让数组从我的文件管理器类接收它们的大小。我在其中设置大小和元素并返回它,因此我不能在开关外部初始化它。此外,我需要在案例2中使用这些返回的数组,案例3用于我的其他类。因此我希望能够从中使用这两个数组案例2和案例3中的案例1不必自己给它们一个值,这是不够的。它不会通过编译器,因为变量也无法初始化。方法之一是在声明时给它们null值。如FileManager e=null;
它将通过编译器,但它需要处理案例2和3中的情况n变量为空。很好,谢谢。我只需要绕过编译器错误,我将使用ifs来确保变量已初始化。非常感谢。