2016-10-27 2 views
0

이전에 게시했지만 아직 문제가 있습니다. 사용자가 제공 한 메시지를 디코딩해야합니다.코드 해독 프로그램 작성

메시지는 일련의 숫자로 구성되어 있으며 이러한 치환을 이용하여 디코딩되어야한다

예컨대
1 = D 
2 = W 
3 = E 
4 = L 
5 = H 
6 = O 
7 = R 

, 5344626741HELLOWORLD가있다.

나는 많은 것들을 시도하고 가깝지만 출력이 정확하지 않습니다. 문자열에 특정 문자가 있는지 검색하는 데 문제가 있다고 생각합니다.

public static void main(String[] args){ 
    Scanner in = new Scanner(System.in); 

    System.out.println("Please enter 10 numbers, after each number you put in, press enter. The numbers can only be from 1 - 7."); 

    int numInputs = 0; 
    String code = "", deciphered = ""; 
    int input = 0, charNumber = 7; 
    //5344626741 
    do{ 
     System.out.println("Please enter a number: "); 
     input = in.nextInt(); 
     if(input>=8 || input<=0){ 
      System.out.println("Please enter a different number: "); 
      input = in.nextInt(); 
      code+=input; 
      numInputs++; 
     } 
     else{ 
     code+=input; 
     numInputs++; 
     } 
    }while(numInputs < 10); 

    System.out.println("Your code is " + code); 
    for(int add = 0; add < 10; add++){ 
     switch(code.charAt(charNumber)){ 
     case '1': deciphered+="D"; 
     case '2': deciphered+="W"; 
     case '3': deciphered+="E"; 
     case '4': deciphered+="L"; 
     case '5': deciphered+="H"; 
     case '6': deciphered+="O"; 
     case '7': deciphered+="R"; 
     break; 
     default: System.out.println("Something went wrong! Try again with numbers only 1 - 7."); 
     charNumber++; 
     } 
    } 

    System.out.println("The output is: "+deciphered); 
    in.close(); 
} 
+3

각'case'에 대해'break'가 필요합니다. 그렇지 않으면 다음'case'로 넘어갑니다. –

+0

숫자를 문자에 매핑하는 배열을 생각 했습니까? –

+0

사용자가 잘못된 입력을 두 번 입력하면이를 무시해야 할 때 유효한 번호로 사용한다는 점도 유의해야합니다. –

답변

1

이 간단한 인쇄상의 오류 및 하나의 논리 오류 다음과 같습니다

어떤 도움을 주시면 더 좋구요

, 여기 내 코드입니다. 나는 switch(code.charAt(charNumber))switch(code.charAt(add))로 변경해야 믿고 루프에 대한 두 번째의 하단에 각 case 문 후 charNumber++;

또한 놓치고있는 휴식 문을 제거해야합니다.

기본적으로 마지막 for 루프에서 올바른 인덱서로 반복하고 있는지 확인해야합니다. 여기에서 프로그램 시작 부분에 charNumber을 7로 초기화 했으므로 문자열 길이를 초과하면 오류가 표시됩니다.

+0

작동 할 코드가 있습니다. 내 사례에 휴식 시간을 추가해야했고 당신이 제안한 것처럼 charAt (추가)를 사용했습니다. 고마워요! –

+0

@BrandonLatimer 여러분을 환영합니다. 이 응답이 귀하의 질문에 충분히 응답한다고 생각되면 수락 응답 버튼을 확인하는 것을 잊지 마십시오! –