2015-01-15 2 views
0

Я посмотрел на некоторые другие подобные сообщения, но не смог найти решение, поэтому искал ваш ценный вклад, спасибо заранее.Java loop - продолжает запрашивать ввод пользователя

Я хочу: Вам будет предложено ввести знак (+, -, /) и на выходе будет отображаться "Вы ввели минус" (если ваш вход был -)

Class который принимает входные данные

import java.util.Scanner; 

public class TakeSign { 
    Scanner userInput = new Scanner(System.in); /*Create an object of scanner class*/ 

    public char mySign() { 
     System.out.print("Enter a sign: "); 
     char input2 = userInput.next().charAt(0); 
     return input2; 
    } 
} 

Главный класс

public class Main { 
    public static void main (String[]args) { 
     TakeSign ts = new TakeSign(); 
     if (ts.mySign() == '+') { 
      System.out.println("You entered plus"); 
     } 
     else if (ts.mySign() == '-') { 
      System.out.println("You entered minus"); 
     } 
     else if (ts.mySign() == '/') { 
      System.out.println("You entered division"); 
     } 
    } 
} 

Проблема

Если мой первый вход / (деление) мне задают в 3 раза. Я ожидал, что вас попросят всего один раз.

Enter a sign:/
Enter a sign:/
Enter a sign:/
You entered division 

Я думаю, что проблема в цикле, который я, вероятно, неправильно писал. Не могли бы вы указать мне в правильном направлении?

ответ

1

Вы можете использовать

switch(ts.mySign()){ 
case '+': 
    System.out.println ("You entered plus"); 
    break; 
case '-': 
    System.out.println ("You entered mimus"); 
    break; 
case '*': 
    System.out.println ("You entered asterisk"); 
    break; 
case '/': 
    System.out.println ("You entered slash"); 
    break; 
default: 
    System.out.println ("Input error"); 
    break; 
} 
+0

Пропустил 'после + * – JClassic

+0

Извините XD u не видел, как вы его отредактировали – JClassic

2

Метод mySign запрашивает у пользователя ввод. Так что если вы вызываете ts.mySign() три раза, он будет спрашивать пользователя три раза. Но это то, что вы делаете в своей цепочке if и else.

Вам нужно позвонить ts.mySign()только один раз перед тем, if заявления, присвоить результат переменной, а затем просто проверить значение этой переменной в каждом из if заявлений.

+0

Спасибо, что объясняет проблему. –

4

Вам нужно назначить ts.mySign() переменной и использовать эту переменную в вашем если заявления

public static void main(String[] args) { 
    TakeSign ts = new TakeSign(); 
    char sign = ts.mySign(); 
    if (sign == '+') { 
     System.out.println("You entered plus"); 
    } else if (sign == '-') { 
     System.out.println("You entered minus"); 
    } else if (sign == '/') { 
     System.out.println("You entered division"); 
    } 
} 
+0

Отлично, спасибо за информацию. –

0

Вы звоните ts.mySign() 3 раза в вашей Условный оператор.

Назовите его один раз и сохраните его в variable, а затем сравните его с вашими знаками.

т.е.

char sign = ts.mySign(); 
if (sign == '+') 
... 
Смежные вопросы