java数学合法性检测_关于java:检查带数字的数学方程式是否只有一位数的数字...

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

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

例如:

该程序吐出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;

}

}

}

尝试发布您已有的一些代码。

刚刚添加了接受数学问题的方法,然后通过它过滤:)

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

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

}

谢谢! 这非常有效。

找出一个数字要做的位数的简单方法:

(int) Math.log10(x) + 1

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

用户输入的响应(数学问题)将被视为字符串。 虽然正确,但这适用于双重响应。 我宁愿不经历来回转换的麻烦

尝试

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;

}

我认为输入类似于"9 - 4 * 2"。 OP希望检查它不包括任何2位数字。

这就是我想要的,保罗:)

更新了这些额外信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值