Java:变量尚未初始化错误
我不断出现这个错误,我不知道为什么: java:102:错误:变量språk1可能尚未初始化 showInputDialog(null,språk1+”:“+språk1glosor+”\n“+språk2+”:”; ^ java:102:错误:变量språk2可能尚未初始化 showInputDialog(null,språk1+”:“+språk1glosor+”\n“+språk2+”:” 这是我的代码:Java:变量尚未初始化错误,java,Java,我不断出现这个错误,我不知道为什么: java:102:错误:变量språk1可能尚未初始化 showInputDialog(null,språk1+”:“+språk1glosor+”\n“+språk2+”:”; ^ java:102:错误:变量språk2可能尚未初始化 showInputDialog(null,språk1+”:“+språk1glosor+”\n“+språk2+”:” 这是我的代码: javax.swing.*; import java.util.Arrays; im
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 + ":");
}
}
javax.swing.*;
导入java.util.array;
导入java.util.LinkedList;
导入java.util.List;
导入java.io.*;
公营格洛索酒店{
公共静态void main(字符串[]args)引发IOException{
List gloslista1=新的LinkedList(Arrays.asList());
List gloslista2=新的LinkedList(Arrays.asList());
字符串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);
开关(输入1){
案例1:
Stringövningnamn=JOptionPane.showInputDialog(null,“Vad heterövningen?”);
字符串språk1=JOptionPane.showInputDialog(null,“språk 1?”);
字符串språk2=JOptionPane.showInputDialog(null,“språk2?”);
while(true){
字符串glosa1=JOptionPane.showInputDialog(null,“glosa på中的Skriv”+språk1+“\n\n”+
“När duär klar skriv klar i rutan”);
if(glosa1.equals(“klar”)){
打破
}
否则{
字符串glosa2=JOptionPane.showInputDialog(null,“glosa på中的Skriv”+språk2);
gloslista1.添加(glosa1);
gloslista2.add(glosa2);
}
}
字符串filnamn1=“språk1ord.txt”;
字符串filnamn2=“språk2ord.txt”;
PrintWriter utström1=新的PrintWriter
(新的缓冲写入程序)
(新文件编写器(filnamn1));
//斯卡帕文本文件
PrintWriter utström2=新的PrintWriter
(新的缓冲写入程序)
(新文件编写器(filnamn2));
//文本文件中的Skapar fil för glosorna påfranska
对于(int i=0;i gloslista1.size())
打破
字符串svar=JOptionPane.showInputDialog(null,språk1+“:”+språk1 glosor+“\n”+språk2+“:”;
}
}
您正在案例1中初始化språk1,并在案例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) {
有没有什么方法可以让它保留在case语句中,并且仍然可以工作?你可以在每个case语句中初始化这些变量。问题是我只希望在case1中初始化变量,而在case2中你不应该引用它们,这基本上意味着错误所说的……如果
input1
恰好是2,那么språk1
和språk2
从未被初始化。这些变量在第一个案例块中声明,但由于如果input1==2
,språk1
和språk2
从未为input1
的特定值分配值,则控制从未通过。然后在第102行使用这些变量未初始化的变量,这是“最好避免的”。