我正在尝试编写一个程序,当给定未完成的公式时,将输出最低位数,如果没有,则输出-1。我已完成所有输入,但在此阶段我不确定如何继续。
示例输入包括:1+1=?
,123*45?=5?088
,-5?*-1=5
,19--45=5?
,??*??=302?
任何有关如何解决此问题的提示都将受到赞赏。
import java.util.Scanner;
import java.util.regex.*;
public class Runes {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int caseNo = sc.nextInt();
for (int c = 0; c < caseNo; c++) {
String input = sc.next();
String re1="([-]?[0-9?]+)"; // -int1 or int1
String re2="([+\\-*])"; //+ or - or *
String re3="([-]?[0-9?]+)"; // -int2 or int2
String re4="(=)"; // Equals
String re5="([-]?[0-9?]+)"; // -int3 or int3
Pattern pattern = Pattern.compile(re1+re2+re3+re4+re5,Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
String int1 = matcher.group(1);
String op1 = matcher.group(2);
String int2 = matcher.group(3);
String op2 = matcher.group(4);
String int3 = matcher.group(5);
System.out.println(int1 + " " + op1 + " " + int2 + " " + op2 + " " + int3);
}
}
}
}
答案 0 :(得分:0)
这是创建Java应用程序的一种方法。
创建一个整数索引数组,其中包含每个问号的值。换句话说,如果有5个问号,则整数索引数组有5个元素。
循环遍历整数索引数组。换句话说,对于5个问号,值应该是(见下面的布局)。
循环遍历整数索引数组,替换问号的索引值。
检查字符串是否是有效的等式。如果是这样,请将其保存在列表中。
循环完成后,打印列表值。
这是第2点的布局。
0, 0, 0, 0, 0
1, 0, 0, 0, 0
...
9, 0, 0, 0, 0
0, 1, 0, 0, 0
...
9, 9, 9, 9, 9
我使用您的输入示例来创建此输出。我在方程中添加了空格,使它们更容易阅读。我手动格式化此输出以适应屏幕
1 + 1 = ? --> 1 + 1 = 2
123 * 45? = 5?088 --> 123 * 456 = 56088
-5? * -1 = 5 --> No equation exists
19 - -45 = 5? --> No equation exists
?? * ?? = 302? --> 57 * 53 = 3021 53 * 57 = 3021 72 * 42 = 3024
42 * 72 = 3024 48 * 63 = 3024 56 * 54 = 3024
36 * 84 = 3024 84 * 36 = 3024 54 * 56 = 3024
63 * 48 = 3024 55 * 55 = 3025 89 * 34 = 3026
34 * 89 = 3026