2017-01-17 5 views
-3

나는 입력 된 메시지를 가져 와서 각 문자의 유니 코드 값에 2를 더한 다음 인쇄하여 단어 사이의 공백을 포함하는 데 문제가 있습니다. 만약 그 구절이 치즈 피자라면, "ejggj"를 출력 한 다음 그 공간에서 멈출 것입니다. 이 문제를 어떻게 해결할 수 있습니까?인코딩 된 메시지에 공백을 두려면 어떻게해야합니까?

package exercises; 
import java.util.Scanner; 
public class Ex10 { 

     public static void main(String[] args) { 
      Scanner scanner = new Scanner(System.in); 
       //Ask for message 
       System.out.println("Enter a string: "); 
       String message = scanner.next(); 

       char[] array = message.toCharArray(); 

       //Encode message 
       for(int i = 0; i < array.length; i++) 
       { 
        char letter; 
        letter = array[i]; 
        if (array[i] =='y') 
        { 
         array[i] = 'a'; 
        } 
        else if (array[i] == 'z') 
        { 
         array[i] = 'b'; 
        } 
        else if (array[i] == letter) 
        { 
         letter += 2; 
         array[i] = letter; 
        } 
        else 
        { 
         letter = ' '; 
        } 
       } 
       //Give back encoded message 
       System.out.print("Encoded message: "); 
       System.out.println(array); 
     }//main 
    }//class 
+0

'if (문자 == ')) 계속;' –

답변

1

Mohsen_Fatemi가 부분적으로 잘못되었습니다. 이 질문의 범위에서 그는 완전히 틀렸다.

문장의 누락 된 부분에 관한 문제는 루프와 그 조건이 아닌 스캐너 사용으로 인한 것입니다.

scanner.next() 메서드는 공백, 탭 또는 줄 바꿈 여부에 관계없이 공백이 발생할 때까지 읽습니다. 전체 입력을 얻으려면 nextLine()을 사용해야합니다.

Mohsen_Fatemi가 알고리즘에 대한 것입니다. 그러나이 질문은 그것에 관한 것이 아닙니다. 그의 입력을 기각하지 마십시오.

+0

브루노 델 로르 감사합니다! 네가 의미하는 바를 이해하고 너는 많이 도왔다. 내 프로그램이 지금 작동합니다. –

+0

반갑습니다. 자바의 공식 문서를 읽는 것을 주저하지 말고 스캐너 클래스가 제공하는 다른 방법을 살펴보십시오. Scanner가 작동하는 방식을 빠르게 이해했으나 다른 것들을 구분 기호로 사용하도록 클래스에 지시 할 수있었습니다. 기본적으로 공백이 있지만 다른 문자로 설정할 수 있습니다 (예를 들어 CSV 파일을 읽는 효율적인 방법이 아니더라도 CSV를 읽음) –

+0

@BrunoDelor 내 이름이 다시 언급 됨 :) –

0

변화 코드의 지능이 방법, 당신은 당신이 당신의 문자열에 공간이있을 때 탈출하려는, 그래서 우리는 공백 문자는 우리가 루프의 라운드를 건너 볼 때 내가 조건 if(array[i]==' ') continue;을 추가했고 다음 반복으로 이동

for(int i = 0; i < array.length; i++) { 
     if (array[i] =='y'){ 
      array[i] = 'a'; 
     }else if (array[i] == 'z'){ 
      array[i] = 'b'; 
     }else{ 
      if(array[i]==' ') continue; 
      array[i] += 2; 
     } 
} 
+0

@I. Adouble 당신이 사실이라면, 내 대답을 사실로 표시하십시오, 고맙습니다. –

+0

당신은 그의 질문에 대답하지 않고 있습니다. 당신은 그의 알고리즘에 대해 옳았지만 그의 문제는 어딘가에있었습니다. –

+0

@ BrunoDelor zoro ... –

관련 문제