2016-02-09 2 views
1

Я новичок в Java, и я хочу создать простую программу, которая позволяет пользователям выбирать между 3 параметрами (t, r и q). q означает бросить курить. Я хочу, чтобы программа продолжала предлагать им выбрать другой вариант, пока они не захотят выйти. Ниже мой код, он не работает. Я получаю ошибку, что q, r и t нужно разрешить переменной, но когда я устанавливаю их как строки, это все равно не работает. Любая помощь будет оценена.Оператор сканера и if

Scanner input3= new Scanner(System.in); 
String choice; 
boolean valid; 

do 
{ 
    System.out.println("Please pick an option. t, r or q"); 
    choice= input3.next(); 

    if(choice==t) 
    { 
     System.out.println("You chose triangle"); 
     valid=true;    
    } 
    else if(choice==r) 
    { 
     System.out.println("You chose rectangle"); 
     valid=true; 
    } 
    else if (choice==q) 
    { 
     System.out.println("You chose to quit."); 
     valid=false; 
    } 
    else 
    { 
     System.out.println("You chose wrong."); 
     valid=true; 
    } 

} 
while(valid==true); 

ответ

3

Вы должны поместить их Arround цитирует ", потому что choice является строка, и вы должны сравнить его со строкой, например:

do { 
    System.out.println("Please pick an option. t, r or q"); 
    choice= input3.next(); 

    if(choice=="t"){ 
     System.out.println("You chose triangle"); 
     valid=true;    
    } 

    else if(choice=="r"){ 
     System.out.println("You chose rectangle"); 
     valid=true; 
    } 

    else if (choice=="q"){ 
     System.out.println("You chose to quit."); 
     valid=false; 
    } 
    else{ 
     System.out.println("You chose wrong."); 
     valid=true; 
    } 

} 
while(valid==true); 

И вы могли бы использовать equals() вместо == для сравнения двух строк :

do { 
    System.out.println("Please pick an option. t, r or q"); 
    choice= input3.next(); 

    if(choice.equals("t")){ 
     System.out.println("You chose triangle"); 
     valid=true;    
    } 

    else if(choice.equals("r")){ 
     System.out.println("You chose rectangle"); 
     valid=true; 
    } 

    else if (choice.equals("q")){ 
     System.out.println("You chose to quit."); 
     valid=false; 
    } 
    else{ 
     System.out.println("You chose wrong."); 
     valid=true; 
    } 

} 
while(valid==true); 

Надеюсь, это поможет.

+1

Сравнение строк, использующих ==, будет сравнивать, являются ли они одной и той же строкой. Используйте String.equals() для сравнения, если строки имеют одну и ту же букву. –

1

Строки необходимо сравнить с функцией string1.equals(string2). Изменить все ваше, если это и, если другое заявление на что-то вроде этого:

choice.equals("t"); 
3

ЗАКАНЧИВАТЬ начинающие учебники в Интернете (и это так, вопрос: Java String.equals versus ==)

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

например:

String choice; 
String t = "t"; 
String r = "r"; 
String q = "q"; 

Вы должны также использовать метод Equals для струнного равенства.

.: например

choice.equals(t); 
+0

Эти переменные кажутся довольно бессмысленными, лучше использовать литерал напрямую или сделать contant: '' t ".equals (choice)'. – Clashsoft

3
import java.util.Scanner; 
public class TestClass { 
    public static void main(String args[]) throws Exception { 
     Scanner input3= new Scanner(System.in); 
     String choice; 
     boolean valid; 


      do { 
       System.out.println("Please pick an option. t, r or q"); 
       choice= input3.next(); 
      if(choice.equals("t")){ 

       System.out.println("You chose triangle"); 
       valid=true;    
      } 

      else if(choice.equals("r")){ 
       System.out.println("You chose rectangle"); 
       valid=true; 
      } 

      else if (choice.equals("q")){ 
       System.out.println("You chose to quit."); 
       valid=false; 
      } 
      else{ 
       System.out.println("You chose wrong."); 
       valid=true; 
      } 

      } 
      while(valid==true); 


    } 
} 

Наслаждайтесь !!!

0

Всякий раз, когда мы хотим сравнить с String, мы должны вставить строку внутри "", а затем вы можете сравнить. и когда мы сравниваем строковый символ по символу. для ex s.charAt (i) == 'y' с ''.

import java.util.*; 
class test{ 
public static void main(String[] args) 
{ 
Scanner input3= new Scanner(System.in); 
String choice; 
boolean valid; 

do 
{ 
System.out.println("Please pick an option. t, r or q"); 
choice= input3.next(); 

if(choice=="t") 
{ 
    System.out.println("You chose triangle"); 
    valid=true;    
} 
else if(choice=="r") 
{ 
    System.out.println("You chose rectangle"); 
    valid=true; 
} 
else if (choice=="q") 
{ 
    System.out.println("You chose to quit."); 
    valid=false; 
} 
else 
{ 
    System.out.println("You chose wrong."); 
    valid=true; 
} 

} 
while(valid==true); 
}} 
Смежные вопросы