2014-10-28 1 views
-1

:올바른 동안 루프 출력 (자바) 나는 지금 내 프로그램 출력이해야

단어를 입력 : 집
바꿀? : A는 집에서 아니요 없습니다
원하는 게 무엇 편지 은.
대체 할 편지는 무엇입니까? : b
집은 없습니다.
대체 할 편지는 무엇입니까? :
대체 할 편지는 무엇입니까? w
새 단어는 housw입니다.
_____________________________.

단어를 입력 : 여기

내 현재의 출력 집은 대체? 원하는 게 무엇 편지
집에는 A가 없습니다

어떤 편지 교체 할 있나요? b
대체 할 편지는 무엇입니까?

____________________________________.

while 루프에 문제가 있습니다. 오류를 수정하는 방법을 모르겠습니다. 사람이 나던 당신이 그들을 그에게하고 새로운 문자를 선택하게 존재하는 문자를 입력하면 당신의 else 문에서

import java.util.Scanner; 
public class WordScrambler { 

    //name 

    public static void main(String[] args) { 

     String word = ""; 
     Scanner keyboard = new Scanner(System.in); 

     System.out.print("Enter a word: " + word); 
     word = keyboard.nextLine(); 


     String readChar = null; 
     System.out.print("What letter do you want to replace?: "); 
     readChar = keyboard.next(); 

     while(true) 
     { 
      if(word.contains(readChar)) 
      { 
       String changeChar; 
       System.out.print("With what letter do you wish to replace it? "); 
       changeChar = keyboard.next(); 

       System.out.println(word.replace(readChar, changeChar)); 

      } 
      else 
      { 
       System.out.print("There is no "+ readChar + " in " + word); 
       System.out.println(); 
       System.out.print("What letter do you want to replace?: "); 
       readChar = keyboard.next(); 
       String changeChar; 
       System.out.print("With what letter do you wish to replace it? "); 
       changeChar = keyboard.next(); 
       System.out.println(word.replace(readChar, changeChar)); 
      } 
     } 
    } 
} 
+0

우리는 당신을 위해 숙제를하고 있지 않습니다. 적절한 질문을하십시오. – VeenarM

+0

어떤 오류가 발생하고 있습니까? 특정 질문을하십시오. – Chiseled

+0

이것은 while 루프에는 문제가되지 않습니다. 귀하의 질문에 맞는 제목을 붙이시겠습니까? – khelwood

답변

0

, 당신은 당신이 대신 단순히 단어가 문자를 포함하지 않는 것을 말하고, 그는 원래 편지를 대체하고자하는 어떤 문자로 사용자에게 있음을 분명히 알 수 있습니다.

else 문에서 두 개의 "질문"부분을 제거하면 문제를 해결할 수 있습니다.

부품 제거합니다 :

System.out.print("What letter do you want to replace?: "); 
    readChar = keyboard.next(); 
    String changeChar; 
    System.out.print("With what letter do you wish to replace it? "); 
    changeChar = keyboard.next(); 
    System.out.println(word.replace(readChar, changeChar)); 
+0

코드에서이 부분을 제거하면 "집이 없습니다"가 끝나지 않는 루프가됩니다. @ Code0 – Alex

+0

예, 다른 입력을 다시 요청하지 않기 때문에 (scanner.next()는 주 스레드에서 실행되는 주 스레드가 실행되는 것을 차단합니다). 새 입력을 요청하면 설정됩니다. @Alex – Code0

+0

감사합니다! @ Code0 – Alex

1

하지만이 새로운 캐릭터가 존재하는 경우 다음 당신도 선택하지 : 여기 내 코드입니다 그 문자열 대신에 당신이 그것을 대체하고 싶은 캐릭터를 물어보십시오. 처럼 다른 문이 보일 것입니다 : 이것은 루프를 다시 실행하고 문자가있는 경우 확인을 의미

else{ 
     System.out.print("There is no "+ readChar + " in " + word); 
     System.out.print("What letter do you want to replace?: "); 
     readChar = keyboard.next(); 
    } 

. 당신이 당신의

else 부분에 보면

0

문제가 다른 블록의 문장의 순서에있다. 디버거가있는 경우 예제를 디버깅 해보십시오 (프로그램을 단계별로 진행하면 문제가 표시됩니다). 디버거가 없으면 system.out.println()이 표시되는 텍스트를 변경하십시오. 모든 system.out.println() 문에 고유 한 텍스트를 추가하여 구별 할 수 있도록하십시오. 문제는 멀리 있지 않습니다 ...

행운을 빕니다!

관련 문제