如果程序接收到 a = 0, b = 0, c - any 作为输入,则应用程序崩溃。错误出现在这一行if (c % gcd != 0)
public void print_solution(int a, int b, int c) {
if (a == 0 && b == 0) {
// Условие бесконечности решений
if (c == 0) {
rezult.setText("x - любое число " +
System.getProperty("line.separator") + "y - любое число");
}
// Условие отсутствия решений
else {
rezult.setText("Решений нет");
}
}
int gcd = gcd_extend(a, b);
// Условие отсутствия решений
if (c % gcd != 0) {
rezult.setText("Решений нет");
} else {
// Решение
rezult.setText("x = " + x * (c / gcd) +
System.getProperty("line.separator") + "y = " + y * (c / gcd));
}
}
int x, y;
public int gcd_extend(int a, int b) {
// Базовый вариант
if (b == 0) {
x = 1;
y = 0;
return a;
} else {
int g = gcd_extend(b, a % b);
int x1 = x, y1 = y;
x = y1;
y = x1 - (a / b) * y1;
return g;
}
}
在第一个 if in 的末尾插入一个 return
print_solution否则代码以零 a 和 b 进一步执行