我目前正在学习Java,我正在制作一个非常基本的计算器,只是为了真正深入其中;变量(ergebnis,zeiche_switch(可能没有被初始化";似乎它可能还没有初始化,因为初始化只能是四种不同可能性中的一种。
import java.io.*;
public class Rechner {
public static void main(String[] args) throws IOException {
//Zahl 1
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String zahl1_e = br.readLine();
int zahl1 = Integer.parseInt(zahl1_e);
//Rechenzeichen
InputStreamReader isr0 = new InputStreamReader(System.in);
BufferedReader br0 = new BufferedReader(isr0);
String zeichen = br0.readLine();
//Zahl 2
InputStreamReader isr1 = new InputStreamReader(System.in);
BufferedReader br1 = new BufferedReader(isr1);
String zahl2_e = br1.readLine();
int zahl2 = Integer.parseInt(zahl2_e);
//Rechnung
int zeichen_switch;
if (zeichen.equals("+")) {
zeichen_switch = 0;
}
if (zeichen.equals("-")) {
zeichen_switch = 1;
}
if (zeichen.equals("*")) {
zeichen_switch = 2;
}
if (zeichen.equals("/")) {
zeichen_switch = 3;
}
int ergebnis;
switch (zeichen_switch) {
case 0:
ergebnis = zahl1 + zahl2;
case 1:
ergebnis = zahl1 - zahl2;
case 2:
ergebnis = zahl1 * zahl2;
case 3:
ergebnis = zahl1 / zahl2;
}
System.out.println("Das Ergebnis ist: " + zahl1 + " " + zeichen + " " + zahl2 + " " + ergebnis);
}
}
问题发生在最后一个打印命令和告诉开关要采用哪种情况的变量处。
提前感谢
如果zeichen_switch不是四个运算符之一,会发生什么?ergebnis从来没有被赋予一个值,你应该在你的开关中添加一个默认情况。Java只是确保ergebnis实际上会被分配一个值,这就是为什么你会得到这个错误。
int zeichen_switch = -1;
if (zeichen.equals("+")) {
zeichen_switch = 0;
}
if (zeichen.equals("-")) {
zeichen_switch = 1;
}
if (zeichen.equals("*")) {
zeichen_switch = 2;
}
if (zeichen.equals("/")) {
zeichen_switch = 3;
}
int ergebnis = -1;
switch (zeichen_switch) {
case 0:
ergebnis = zahl1 + zahl2;
case 1:
ergebnis = zahl1 - zahl2;
case 2:
ergebnis = zahl1 * zahl2;
case 3:
ergebnis = zahl1 / zahl2;
default:
ergebnis = 0;
}
注意zeichen_switch也被分配了一个值。