2015-09-16 70 views
-2

我不斷收到這個錯誤,我想不通爲什麼:的Java:變量尚未初始化錯誤

Glosor.java:102: error: variable språk1 might not have been initialized JOptionPane.showInputDialog(null, språk1 + ":" + språk1glosor + "\n" + språk2 + ":"); ^ Glosor.java:102: error: variable språk2 might not have been initialized JOptionPane.showInputDialog(null, språk1 + ":" + språk1glosor + "\n" + språk2 + ":");

這是我的代碼:

javax.swing.*; 
import java.util.Arrays; 
import java.util.LinkedList; 
import java.util.List; 
import java.io.*; 

public class Glosor { 
public static void main(String[] args) throws IOException { 

List<String> gloslista1 = new LinkedList<String>(Arrays.asList()); 
List<String> gloslista2 = new LinkedList<String>(Arrays.asList()); 

    String inputStr1 =  JOptionPane.showInputDialog(null, 
               "**********************************" + "\n\n" + 
               "1. Skapa glosövning" + "\n\n" + 
               "2. Starta glosövning" + "\n\n" + 
               "3. Avsluta" + "\n\n" + 
               "**********************************"); 
    int input1 = Integer.parseInt(inputStr1); 


    switch (input1) { 

     case 1: 

     String övningsnamn = JOptionPane.showInputDialog(null, "Vad heter övningen?"); 
     String språk1 = JOptionPane.showInputDialog(null, "Språk 1?");  
     String språk2 = JOptionPane.showInputDialog(null, "Språk 2?"); 

      while (true) { 

      String glosa1 = JOptionPane.showInputDialog(null, "Skriv in glosa på " + språk1 + "\n\n" + 
                  "När du är klar skriv klar i rutan");    
       if(glosa1.equals("klar")) { 
       break; 

       } 
       else {   
       String glosa2 = JOptionPane.showInputDialog(null, "Skriv in glosa på " + språk2); 


       gloslista1.add(glosa1); 
       gloslista2.add(glosa2); 
       }      

      } 

       String filnamn1 = "språk1ord.txt"; 
       String filnamn2 = "språk2ord.txt"; 

       PrintWriter utström1 = new PrintWriter 
            (new BufferedWriter 
            (new FileWriter(filnamn1))); 
       //Skapar en text fil för glosorna på svenska 

       PrintWriter utström2 = new PrintWriter 
            (new BufferedWriter 
            (new FileWriter(filnamn2))); 
       //Skapar en text fil för glosorna på franska 

       for(int i = 0; i<=gloslista1.size()-1; i++) { 

       utström1.println(gloslista1.get(i)); 
       utström2.println(gloslista2.get(i)); 
       //Skriver in glosor i text filerna 

       } 
       utström1.close(); 
       utström2.close(); 





     case 2: 
     String inputStr2 = JOptionPane.showInputDialog(null, 
               "**********************************" + "\n\n" + 
               "1. Starta glosövning" + "\n\n" + 
               "2. Avsluta" + "\n\n" + 
               "**********************************"); 
     int input2 = Integer.parseInt(inputStr2); 

      if(input2 == 1) { 

       BufferedReader inström1 = new BufferedReader 
           (new FileReader("svenskaord.txt"));     
       String språk1glosor; 

       BufferedReader inström2 = new BufferedReader 
           (new FileReader("franskaord.txt"));     
       String språk2glosor; 

       int counter = 0; 
       while (true) { 
       counter++; 
       språk1glosor = inström1.readLine(); 
       språk2glosor = inström2.readLine(); 

        if(counter > gloslista1.size()) 
        break; 


       String svar = JOptionPane.showInputDialog(null, språk1 + ":" + språk1glosor + "\n" + språk2 + ":"); 





       }       
      } 
+0

這意味着基本上是什麼錯誤說...如果'input1'碰巧是2,那麼'språk1'和'språk2'永遠不會被初始化。這些變量在第一個case塊中被聲明爲*,但是如果'input1 == 2','språk1'和'språk2'永遠不會被賦值* input1'這個特定值的值,那麼控制就不會從那裏通過。然後在第102行,您正在使用這些未初始化的變量,這是「最好的避免」。 – WhiteViking

回答

1

您在初始化språk1您案例1並在案例1和案例2中提及它。您需要將案例陳述中的初始化移除:

int input1 = Integer.parseInt(inputStr1); 
String övningsnamn = JOptionPane.showInputDialog(null, "Vad heter övningen?"); 
String språk1 = JOptionPane.showInputDialog(null, "Språk 1?");  
String språk2 = JOptionPane.showInputDialog(null, "Språk 2?"); 

switch (input1) { 
+0

有沒有什麼辦法可以保留在案件陳述中,並仍然可以使用? –

+0

您可以在每個case語句中初始化這些變量。 – DenimChicken

+0

事情是我只想變量初始化的情況下1 –