import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int NumRS=in.nextInt();
int NumR=NumRS/10;
int NumS=NumRS%10;
String R=null,S=null;//这里我一开始是写的 String R,S;
switch(NumS)
{
case 1: S=("Faint signals, barely perceptible");
break;
case 2: S=("Very weak signals");
break;
case 3: S=("Weak signals");
break;
case 4: S=("Fair signals");
break;
case 5: S=("Fairly good signals");
break;
case 6: S=("Good signals");
break;
case 7: S=("Moderately strong signals");
break;
case 8: S=("Strong signals");
break;
case 9: S=("Extremely strong signals");
break;
}
switch(NumR)
{
case 1:R=("Unreadable");
break;
case 2: R=("Barely readable, occasional words distinguishable");
break;
case 3: R=("Readable with considerable difficulty");
break;
case 4: R=("Readable with practically no difficulty");
break;
case 5: R=("Perfectly readable");
break;
}
System.out.println(R+S);
}
}
我加粗的那一行,我一开始没有给他赋初值,结果程序提示我R,S没有被初始化。可是我只是给R,S赋值,又不是使用他们,为什么要先初始化?
而一般来说,String S="abc";这种语句是不会报错的,那我在switch里给R,S赋值,为啥就要先初始化呢?
从你的代码出发,你使用String R,S;,如果你下面的所有条件语句都不满足,那么最后一句System.out.println(R+S);该打印什么呢,只能报错,为了杜绝这种现象,java编译器只能默认让你初始化对象了
因为有可能条件都不满足, 而你最后还要输出R和S, 所以必须得先初始化
您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您可以仔细阅读看是否解决了您的问题。
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~