首页 > 解决方案 > 如何让我的 for 循环转到下一个字符?

问题描述

我正在创建一个代码,它将根据输入字母输出一个数字。我的代码卡在了重复执行字符 0 的循环中。朋友说 char Check = userInput.charAt(numTelephone); 会修复它。当我将它放入我的代码中时,我收到了错误:错误:无法取消引用字符 char Check = userInput.charAt(numTelephone);

import java.util.Scanner;
public class PhoneWords {

     public static void main(String []args){
        Scanner scnr = new Scanner(System.in);
        
        int numTelephone;
       
        char userInput;
        userInput = scnr.next().charAt(0);
         
        System.out.println("Enter a telephone number using letters (EXIT to quit): ");
        System.out.println("The corresponding telephone number is: ");
        
        if ((userInput >= 'A') || (userInput <= 'Z') || (userInput >= 'a') || (userInput <= 'z')){
            
            for (numTelephone = 0; numTelephone < 7; numTelephone++){
            char Check = userInput.charAt(numTelephone);
                     if (numTelephone == 3){
                        System.out.print("-");
                     }
               switch (userInput) {
                   case 'A':
                   case 'a':
                   case 'B':
                   case 'b':
                   case 'C':
                   case 'c':
                       System.out.print("2");
                       break;
                   case 'D':
                   case 'd':
                   case 'E':
                   case 'e':
                   case 'F':
                   case 'f':
                       System.out.print("3");
                       break;
                   case 'G':
                   case 'g':
                   case 'H':
                   case 'h':
                   case 'I':
                   case 'i':
                       System.out.print("4");
                       break;
                   case 'J':
                   case 'j':
                   case 'K':
                   case 'k':
                   case 'L':
                   case 'l':
                       System.out.print("5");
                       break;
                   case 'M':
                   case 'm':
                   case 'N':
                   case 'n':
                   case 'O':
                   case 'o':
                       System.out.print("6");
                       break;
                   case 'P':
                   case 'p':
                   case 'Q':
                   case 'q':
                   case 'R':
                   case 'r':
                   case 'S':
                   case 's':
                       System.out.print("7");
                       break;
                   case 'T':
                   case 't':
                   case 'U':
                   case 'u':
                   case 'V':
                   case 'v':
                       System.out.print("8");
                       break; 
                   case 'W':
                   case 'w':
                   case 'X':
                   case 'x':
                   case 'Y':
                   case 'y':
                   case 'Z':
                   case 'z':
                       System.out.print("9");
                       break;
                    default:
                        break;
               }
            }
        }
     }
}

标签: javaloopsfor-loopdereference

解决方案


char 类型是原始类型——不是对象——所以它不能被取消引用

取消引用是访问引用所引用的值的过程。由于 char 已经是一个值(不是引用),它不能被取消引用。

所以从给定的输入中获取字符,例如:

char userInput = scnr.nextLine().charAt(0);

并评论您朋友建议的这一行,该行未在任何地方使用:

//char Check = userInput.charAt(numTelephone);

推荐阅读