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