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来确保变量已初始化。非常感谢。