为什么String b,c在一开始不赋值就输出不了(语言-java)

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
    int a;
    String b="",c="";
    Scanner in = new Scanner(System.in);
    a=in.nextInt();
    switch (a/10)
    {
    case 1: b="unreadable";
    break;
    case 2: b="barely readable, occasional words distinguishable";
    break;
    case 3:b="readable with considerable difficulty";
    break;
    case 4:b="readable with practically no difficulty";
    break;
    case 5:b="perfectly readable";
    }
    switch (a%10)
    {
    case 1: c="Faint signals, barely perceptible";
    break;
    case 2:c="Very weak signals";
    break;
    case 3:c="Weak signals";
    break;
    case 4:c="Fair signals";
    break;
    case 5:c="Fairly good signals";
    break;
    case 6:c="Good signals";
    break;
    case 7:c="Moderately strong signals";
    break;
    case 8:c="Strong signals";
    break;
    case 9:c="Extremely strong signals";
    }
    System.out.println(c+", "+b+".");
}

}

  • 你的switch分支没有 default 分支,导致 b 和 c 有可能没有初始化,后续使用会出现问题,java编译时就会直接报错,提前告诉你。

img

  • 你也可以加 default分支

img

string类型不赋值它就是个null
null进行字符串拼接不抛异常吗

因为你的case没有覆盖所有情况,比如你输入10回车,那么a%10结果是0,就不会给c赋值了。
b和c的值没有直接关系,是你的case值写的没有覆盖所有情况。比如你输入65回车
那么b的那个case 65/10是6,没有对应的case就不会赋值
但是c的cade65%10是5,c就有值了