我正在制作类似游戏的程序。
我需要检查用户的输入(使用程序提供的四个随机数的数学公式),以查看用户给出的数字是否只有一位数。
例如:
该计划吐出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;
}
}
}
答案 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
}