Adam Anselm Ответов: 1

Java читает только последний символ


Предположим, Что A=1,B=2, C=3
Если я ввожу ABC, то вывод должен быть 123, а не 333, потому что java считывает только последний символ.Ниже приведен мой код. В настоящее время любой помощь будет оценили спасибо.

Что я уже пробовал:

public static void main(String[] args) {
        // TODO code application logic here
        Scanner input = new Scanner(System.in);
        System.out.println("Please enter a 10 character word:");
        String a = input.nextLine();
        String letters = a.substring(0,3);
        char letter[] = letters.toCharArray();
        
        for(int i=0;i<letter.length;i++){
         for(char c: letter){
             switch(c){
                 case 'A':case'B': case 'C': case 'a': case'b': case 'c': letter[i]='0';break;
                 case 'D':case'E': case 'F': case 'd': case'e': case 'f': letter[i]='1';break;
                 case 'G':case'H':case'I':case'g':case'i':case'h':letter[i]='2';break;
                 case 'J':case'K':case'L':case'j':case'k':case'l':letter[i]='3';break;
                 case 'M':case'N':case'O':case'm':case'n':case'o':letter[i]='4';break;
                 case 'P':case'Q':case'R':case'p':case'q':case'r':letter[i]='5';break;
                 case 'S':case'T':case's':case't':letter[i]='6';break;
                 case 'U':case'V':case'u':case'v':letter[i]='7';break;
                 case 'W':case'X':case'w':case'x':letter[i]='8';break;
                 case 'Y':case'Z':case'y':case'z':letter[i]='9';break;
             }
         }
         System.out.print(letter[i]);
        }System.out.println();

       

           }

CPallini

Вы повторно используете в качестве входных данных символ, который вы перезаписали. Пожалуйста, сформулируйте свои требования, чтобы получить лучшую помощь.

Jochen Arndt

Опубликованный код не может привести к "333" для "ABC", потому что вы преобразуете A, B и C в "0".

Также нет необходимости во внутренней петле. Это просто пустая трата времени.

1 Ответов

Рейтинг:
2

Richard MacCutchan

Вы просите слово из 10 символов, но затем извлекаете только первые три буквы. У тебя их два for циклы, пытающиеся повторить один и тот же массив. Вы могли бы заменить его switch блок с более эффективным if else строительство. И установка значений в вашем коде не соответствует описанию в вашем вопросе: вы сохраняете 0 для A,B или C, 1 для D,E,F и т. д..

Смотрите также ваш первоначальный вопрос по адресу https://www.codeproject.com/Questions/1246483/How-to-let-java-read-multiple-characters-at-once-a[^].