【问题标题】:Why this code is giving two different outputs for same input?为什么此代码为相同的输入提供两个不同的输出?
【发布时间】:2021-02-05 07:22:48
【问题描述】:

对于输入(12134),在某些情况下它给出输出:“是”,在某些情况下它给出“否”。

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");

        }

    }

}

【问题讨论】:

    标签: java for-loop while-loop


    【解决方案1】:

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

    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");
                }
            }
    
        }
    

    【讨论】:

    • 赞成。您还可以提供一个解决方案(将它们放在for 循环中)。
    • 你说得对,我编辑了答案,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    相关资源
    最近更新 更多