Я пытаюсь написать программу, которая запрашивает ввод 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 Если вы хотите бросить курить, тип д [вход] [ ничего не происходит, но вы можете продолжать вводить входы]
Может ли кто-нибудь решить это для меня ??? ТИА и жаль, если это неправильный способ форматирования кода
Ваша проблема, как представляется, вы в 'в то время как (независимо) ', и вы никогда не устанавливаете' any' '' false. Измените 'while (str! =" Q ") {whatever = true;}' to 'if (str ==" q ") {whatever = false;}'. Причина, по которой вы можете продолжать вводить значения, заключается в том, что вы переходите ко второму, бесконечному циклу 'while'. – Hosch250
Также сравнение строки с '==' в java неверно. используйте 'if (str.equals (" 1 "))' – John3136
'while (str! =" q ") {' nope. еще раз еще вопрос о проблеме с вопросом «String». – njzk2