Java循环 - 继续要求用户输入

时间:2015-01-15 19:33:13

标签: java

我看了一些其他类似的帖子,但无法弄清楚解决方案,因此请提前感谢您寻找宝贵的意见。

我想要的内容:系统会要求您输入一个标记(+-/),输出结果将显示& #34;您输入了减号" (如果您的输入为-

接受输入的类

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

我认为问题出现在我可能没有正确编写的循环中。你能指点我正确的方向吗?

4 个答案:

答案 0 :(得分:4)

您需要将ts.mySign()分配给变量并在if语句中使用该变量

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");
    }
}

答案 1 :(得分:2)

mySign方法要求用户输入。因此,如果您拨打ts.mySign()三次,它会向用户询问三次。但这就是您在ifelse语句链中所做的事情。

您需要在ts.mySign()语句之前只调用if 一次,将结果分配给变量,然后只检查每个变量中该变量的值{1}}陈述。

答案 2 :(得分: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;
}

答案 3 :(得分:0)

你在if语句中调用了ts.mySign()3次。

将其称为一次并将其存储在variable中,然后与您的星座进行比较。

char sign = ts.mySign();
if (sign == '+')
...