Я пытаюсь написать программу, которая, когда даны незавершенные уравнения, выведет самую низкую цифру, которая будет работать, или -1, если никто не будет работать. У меня есть все мои настройки, но на этом этапе я не уверен, как продолжить.
Пример ввода: 1+1=?
, 123*45?=5?088
-5?*-1=5
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);
}
}
}
}
Здесь один из способов создания приложения Java.
Создайте массив индексов Integer со значением для каждого вопросительного знака. Другими словами, если есть 5 вопросительных знаков, ваш массив индексов Integer имеет 5 элементов.
Цикл через массив индексов Integer. Другими словами, для 5 вопросительных знаков значения должны быть (см. Схему ниже).
Перемещаясь через массив индексов Integer, замените значения индекса для вопросительных знаков.
Проверьте, является ли строка допустимым уравнением. Если это так, сохраните его в списке.
Когда цикл завершен, напечатайте значения List.
Вот макет для пункта 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
?
s заменить на ту же цифру?