2014-11-17 4 views
0

Я пытаюсь написать программу, которая запрашивает ввод 1, 2 или q. 1 запросит ввод, распечатает вход, а затем распечатает отрегулированный вход. 2 будет делать точную противоположность 1, запрашивая ввод, а затем печатать декодированную версию. q прекратит выполнение программы:не считывание пользовательских входов

import java.io.BufferedReader; 
import java.io.InputStreamReader; 

public class StringyString { 
    public static void main (String[] args) throws java.io.IOException{ 
     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     String str; 
     //int n; 
     boolean whatever = true; 

     while(whatever){ 
       System.out.println("If you would like to type something w/o using the formula, type 1"); 
       System.out.println("If you would like to type something using the formula, type 2"); 
       System.out.println("If you would like to quit, type q"); 

       str = br.readLine(); 


       if(str == "1"){ 
        System.out.println("Type something below and press enter to end your input"); 
        String str1 = br.readLine(); 
        System.out.println("Your word is " + str1); 
        System.out.println("Your altered word is: "); 

        String str2 = str1.replace('A', 'Q'); 
        String str3 = str2.replace('E', 'W'); 
        String str4 = str3.replace('I', 'L'); 
        String str5 = str4.replace('O', 'P'); 
        String str6 = str5.replace('U', 'G'); 
        String str7 = str6.replace('1', 'J'); 
      //str = s7r.replace(‘J uuuuu’, ‘1’); 
        String str8 = str7.replace('5', 'S'); 
        String str9 = str8.replace('S', '5'); 
        String str10 = str9.replace('8', 'B'); 
        String str11 = str10.replace('B', '8'); 

        System.out.println(str11); 

       } 
       if(str == "2"){ 
        System.out.println("Type something below and type '/.' to end your input"); 
        str = br.readLine(); 
      //n = Integer.parseInt(str); 
        System.out.println("Your word is " + str); 
        System.out.println("Your decoded word is: "); 

        str = str.replace('Q', 'A'); 
        str = str.replace('W', 'E'); 
        str = str.replace('L', 'I'); 
        str = str.replace('P', 'O'); 
        str = str.replace('G', 'U'); 
        str = str.replace('1', 'J'); 
        str = str.replace('J', '1'); 
        str = str.replace('5', 'S'); 
        str = str.replace('S', '5'); 
        str = str.replace('8', 'B'); 
        str = str.replace('B', '8'); 

        System.out.println(str); 

     } 
       while(str != "q"){ 
        whatever = true; 

       } 
       // System.out.println(str); 

       } 
    } 
} 

Однако каждый раз, когда я запускаю программу, это не исключает ввода. Выход: Если вы хотите что-то типа ж/о, используя формулу, тип 1 Если вы хотите что-то типа с формулой, тип 2 Если вы хотите бросить курить, тип д [вход] [ ничего не происходит, но вы можете продолжать вводить входы]

Может ли кто-нибудь решить это для меня ??? ТИА и жаль, если это неправильный способ форматирования кода

+0

Ваша проблема, как представляется, вы в 'в то время как (независимо) ', и вы никогда не устанавливаете' any' '' false. Измените 'while (str! =" Q ") {whatever = true;}' to 'if (str ==" q ") {whatever = false;}'. Причина, по которой вы можете продолжать вводить значения, заключается в том, что вы переходите ко второму, бесконечному циклу 'while'. – Hosch250

+2

Также сравнение строки с '==' в java неверно. используйте 'if (str.equals (" 1 "))' – John3136

+0

'while (str! =" q ") {' nope. еще раз еще вопрос о проблеме с вопросом «String». – njzk2

ответ

0

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

import java.io.BufferedReader; 
import java.io.InputStreamReader; 

public class test { 
public static void main (String[] args) throws java.io.IOException{ 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String str; 
    //int n; 
    boolean whatever = true; 

    while(whatever){ 
      System.out.println("If you would like to type something w/o using the formula, type 1"); 
      System.out.println("If you would like to type something using the formula, type 2"); 
      System.out.println("If you would like to quit, type 0"); 

      str = br.readLine(); 


      if(Integer.parseInt(str)==1){ 
       System.out.println("Type something below and press enter to end your input"); 
       String str1 = br.readLine(); 
       System.out.println("Your word is " + str1); 
       System.out.println("Your altered word is: "); 

       str1 = str1.replace('A', 'Q'); 
       str1 = str1.replace('E', 'W'); 
       str1 = str1.replace('I', 'L'); 
       str1 = str1.replace('O', 'P'); 
       str1 = str1.replace('U', 'G'); 
       str1 = str1.replace('1', 'J'); 
     //str = s7r.replace(‘J uuuuu’, ‘1’); 
       str1 = str1.replace('5', 'S'); 
       str1 = str1.replace('S', '5'); 
       str1 = str1.replace('8', 'B'); 
       str1 = str1.replace('B', '8'); 

       System.out.println(str1); 

      } 

      else if(Integer.parseInt(str)==2){ 
       System.out.println("Type something below and type '/.' to end your input"); 
       str = br.readLine(); 

       System.out.println("Your word is " + str); 
       System.out.println("Your decoded word is: "); 

       str= str.replace('Q', 'A'); 
       str= str.replace('W', 'E'); 
       str= str.replace('L', 'I'); 
       str= str.replace('P', 'O'); 
       str= str.replace('G', 'U'); 
       str= str.replace('1', 'J'); 
       str= str.replace('J', '1'); 
       str= str.replace('5', 'S'); 
       str= str.replace('S', '5'); 
       str= str.replace('8', 'B'); 
       str= str.replace('B', '8'); 

       System.out.println(str); 
       } 
      else if(Integer.parseInt(str)==0){ 
      System.out.println("Quit"); 
      whatever = true; 
      break; 
      } 
      else{ 
      System.out.println("Wrong Input Try Again!"); 
      } 


    } 



    }   
} 
+0

Спасибо, ребята, это было действительно полезно. Я все еще работаю над своими навыками кодирования, но ответы y'alls заставили меня в правильном направлении. Благодаря! –

+0

Спасибо, Якоб. Я всегда здесь, чтобы помочь вам. –

0

Ваша проблема в этом разделе прямо здесь:

while(str != "q") 
{ 
    whatever = true; 
} 

Здесь Вы ввели бесконечный цикл, и система не читает в любых значениях от вас - просто зацикливание навсегда. Дополнительная проблема заключается в том, что даже если str был «q», вы никогда не устанавливали str на false, чтобы разбить цикл while(whatever). Попробуйте использовать этот код вместо:

if(str.equals("q")) 
{ 
    whatever = false; 
} 

Как отметил John3136, вы не должны использовать оператор == для сравнения строк в Java, вы должны использовать вместо str.equals(value).

Для дальнейших изменений не следует указывать переменные whatever; имя не сообщает вам, что делает переменная, что затруднит отладку вашей программы.

Смежные вопросы