2014-10-28 3 views
-1

мне нужно прямо сейчас сделать мой вывод программы это:Correct, а выход контура (Java)

Введите слово: дом
Какое письмо вы хотите заменить ?: А не
Существует не является в доме.
Какую букву вы хотите заменить ?: b
Нет дома.
Какую букву вы хотите заменить ?: e
С какими буквами вы хотите ее заменить? w
Новое слово - дом.
_____________________________________.

Вот мой выходной ток:

Введите слово: дом
Какое письмо вы хотите заменить ?:
Там нет в доме
Какое письмо вы хотите заменить ?: b
С какими буквами вы хотите его заменить?

_____________________________________.

У меня возникли проблемы с моим циклом while. И я не уверен, как исправить ошибку. Вот мой код:

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

Это не проблема с циклами. Можете ли вы назвать свой вопрос чем-то соответствующим? – khelwood

ответ

0

Если посмотреть в вашем

else части, вы можете ясно видеть, что вы попросите пользователя с тем, что письмо, которое он желает, чтобы заменить оригинал письма, вместо того, чтобы просто сказать, что слово не содержит букву.

Вы можете исправить это, просто удалив две части «вопроса» из инструкции 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(); 
    } 

Это означает, что ваш цикл будет работать снова и проверить, если письмо существует.

0

проблема заключается в последовательности операторов в вашем еще блоке. Если у вас есть отладчик, попробуйте отладить ваш пример (шаг за шагом через вашу программу - вы увидите проблему). Если у вас нет отладчика, попробуйте изменить текст, отображаемый на экране system.out.println(). Просто добавьте немного уникального текста в каждый оператор system.out.println(), чтобы они стали различимыми для вас. Проблема не за горами ...

Удачи!