检查带数字的数学方程式是否只有一位数的数字

时间:2016-04-07 02:42:25

标签: java math

我正在制作类似游戏的程序。

我需要检查用户的输入(使用程序提供的四个随机数的数学公式),以查看用户给出的数字是否只有一位数。

例如:

该计划吐出6 4 9 5

用户可以输入9 + 5 + 6 + 4(等于24)。

但我不希望他们做任何像95 - 64(不对,只是一个例子)做24的事。

我如何检查等式中的数字是否只有一位?

/ **      *接受用户的数学问题。      * 然后...      *确保输入的数学问题遵循规则并等于24。      *规则:必须至少有一个乘法,除法,加法或减法的符号。      *输入的数字只有一位数。      *问题等于24。      * @param无      * @return true或false      *如果问题遵循规则并且等于24 - 真(玩家获胜)      *如果问题不符合规则并且等于24 - 假(玩家输了)      *如果问题不遵守规则并且不等于24 - 假(玩家输了)      *
     * /     public void mathProblem()     {         扫描仪扫描=新扫描仪(System.in);

    System.out.println("");
    String response = scan.nextLine();

    boolean done = false;

    while (!done)
    {
        if (response.contains("*") || response.contains("/") || response.contains("+") || response.contains("-"))
        {
            //If statement to check and see if numbers in response ONLY have ONE number.
        }

        else if (!response.contains("*") || !response.contains("/") || !response.contains("+") || !response.contains("-"))
        {
            done = true;    
        }
    }        
}

3 个答案:

答案 0 :(得分:0)

  if (("" + input).length() > 1) {
     // say something about length
  }
  else {
    // all ok
  }

或者再次,如果它已经是一个int测试,它在0到9之间

由于输入似乎是一个显示整个等式的字符串,所以

 String input = "9 + 5 + 6 + 4";
 String el [] = input.split (" ");
 boolean foundSymbol = false;
 for (String e : el) {
    assert (e.length() == 1);

    if (e.equals ("+") || e.equals ("-")) //etc
        foundSymbol = true; 
 }

答案 1 :(得分:0)

一种简单的方法,可以找出数字的位数:

String url1= "https://canvas.instructure.com/api/v1"; URL url = new URL(url1+"/courses"); connection.setRequestProperty("Authorization", "Bearer "+auth); connection.setRequestMethod("GET"); //now you can open the connection... HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();

您还可以检查输入的数字是否大于9。

答案 2 :(得分:0)

检查输入的一种方法是使用正则表达式。例如:

if (!Pattern.matches("(\\s*\\d\\s*[+-*/]){3}+\\s*\\d", input)) {
    ...
}

该表达式只允许一位数字并自动忽略空格并检查有效运算符(避免所有包含的语句)。更好的是,您可以将捕获组添加到表达式中,以自动从输入中获取数字和运算符。

Pattern pattern = Pattern.compile("\\s*(\\d)\\s*([+-*/])\\s*(\\d)\\s*([+-*/])\\s*(\\d)\\s*([+-*/])\\s*(\\d)");
Matcher matcher = pattern.matcher(input);
while (!matcher.matches()) {
    // print error and accept new input
    matcher = pattern.matcher(input);
}

int result = Integer.parseInt(matcher.group(1));
for (int g = 2; g <=6; g+= 2) {
    switch (matcher.group(g)) {
    case '*':
        result *= Integer.parseInt(matcher.group(g + 1));
        break;
    case '+':
        result += Integer.parseInt(matcher.group(g + 1));
        break;
    // and so on
}