为什么这个代码对相同的输入给出两个不同的输出?



对于输入(12134),在某些情况下会给出输出:"Yes"在某些情况下,它是给予"不"。

package nagarroBootcamp;
import java.util.Scanner;
public class OddEven {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int carnum = 0;
int lastDigit = 0;
int sumOfEven = 0;
int sumOfOdd = 0;
for (int i = 1; i <= N; i++) {
carnum = sc.nextInt();
int temp = carnum;
while (temp > 0) {
lastDigit = temp % 10;
if (lastDigit % 2 == 0) {
sumOfEven += lastDigit;
} else {
sumOfOdd += lastDigit;
}
temp /= 10;
}
if (sumOfEven % 4 == 0 || sumOfOdd % 3 == 0)
System.out.println("Yes");
else
System.out.println("No");
}
}
}

原因是,您没有为后续输入重置这些变量,您只是在开始时初始化它们一次,因此只有第一个结果实际上是相关的

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
for (int i = 1; i <= N; i++) {
int carnum = 0;
int lastDigit = 0;
int sumOfEven = 0;
int sumOfOdd = 0;
carnum = sc.nextInt();
int temp = carnum;
while (temp > 0) {
lastDigit = temp % 10;
if (lastDigit % 2 == 0) {
sumOfEven += lastDigit;
} else {
sumOfOdd += lastDigit;
}
temp /= 10;
}
if (sumOfEven % 4 == 0 || sumOfOdd % 3 == 0) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}

最新更新