【问题标题】:using char data in a switch statement在 switch 语句中使用 char 数据
【发布时间】:2019-06-01 02:08:29
【问题描述】:

我正在尝试获取一个 case 语句,以使用从字符串中提取的 char 数据将整数添加到整数数组中。

int x = SString.length() - 1;
int[] values = new int[x + 1];
for (int i = 0; i <= x; i++) {
    System.out.println(keyword.charAt(i));
    switch (SString.charAt(i)) {
        case 'a':
            values[i] = 0;
        case 'b':
            values[i] = 1;
        case 'c':
            values[i] = 2;
            System.out.println(values[i]);
    }
}

SString = abcvalues = {0,1,2} 时,我的预期输出。相反,values = {2,2,2}

【问题讨论】:

  • 开关需要break 语句。

标签: java arrays char switch-statement


【解决方案1】:

您忘记了break 语句。

switch (SString.charAt(i)) {
case 'a':
    values[i] = 0;
    break;
case 'b':
    values[i] = 1;
    break;
case 'c':
    values[i] = 2;  
    break;
}

【讨论】:

  • 我觉得自己像个白痴。我已经盯着这个看了大约 3 个小时,但我从来没有想过。
【解决方案2】:

您忘记了每个案例语句中的中断,因此所有案例都失败了,最终都以values[i] = 2; 结束

switch(SString.charAt(i)){
  case 'a':
    values[i] = 0;
    break; // this one for each
  case 'b':
    ...

【讨论】:

    【解决方案3】:

    你忘记了 break 语句并且 System.out 应该在 switch 语句之外。

        String SString = "abc";
        int x = SString.length() - 1;
        int[] values = new int[x + 1];
        for (int i = 0; i <= x; i++) {
            switch (SString.charAt(i)) {
                case 'a':
                    values[i] = 0;
                    break;
                case 'b':
                    values[i] = 1;
                    break;
                case 'c':
                    values[i] = 2;
                    break;
                default:
                    break;
            }
            System.out.print(values[i] + " ");
        }
    

    输出:0 1 2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-27
      • 2021-12-08
      • 1970-01-01
      相关资源
      最近更新 更多