bhambu_sudhir
bhambu_sudhir

Reputation: 21

Why this code is giving two different outputs for same input?

For input(12134),in some cases it is giving output:"Yes" and in some cases it is giving "No".

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

        }

    }

}

Upvotes: 0

Views: 142

Answers (1)

ibecar
ibecar

Reputation: 415

The reason is, that you are not resetting these variables for subsequent input, you just initialize them once at the beginning, so only the first result is actually relevant

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

    }

Upvotes: 4

Related Questions