Besoin d'écrire un programme pour calculer la somme de tous les chiffres, puis donner des résultats lorsque la valeur totale de la somme se termine par 5 ou 8.Veuillez aider à corriger ce code!

import java.util.Scanner;
public class Main {

    public static void main(String[] args) {

        Scanner in= new Scanner(System.in);
        int customerID = in.nextInt();
        while(customerID > 0) 
        {
        int Reminder = customerID % 10;
        int sum = sum+ Reminder;
        customerID = customerID / 10;
        }
        if(sum%5||sum%8)
        {
        System.out.println("Lucky Customer");
        }else
        {
        System.out.println("Unlucky Customer");
        }
        if(sum <0)
        {
        System.out.println("Invalid Input");
        }
        }
        }
-8
aruncj 15 nov. 2017 à 10:23

4 réponses

Meilleure réponse

Outre le fait que ce code ne produit pas l'erreur que vous avez mentionnée, il y a d'autres problèmes avec le code. J'ai essayé de les aborder à la place.

public static void main(String[] args) {
    Scanner in= new Scanner(System.in);
    int customerID = in.nextInt();
    int sum = 0;
    // sum needs to be initialized outside the while loop
    // or else you wouldn't be able to use it outside it
    while(customerID > 0) {
        int Reminder = customerID % 10;
        sum = sum+ Reminder;
        customerID = customerID / 10;
    }
    if(sum%5 == 0 || sum%8 == 0) {
        //You cannot use int as a condition in if
        System.out.println("Lucky Customer");
    } else {
        System.out.println("Unlucky Customer");
    }
    if(sum <0) {
        System.out.println("Invalid Input");
    }
}
1
Yash 15 nov. 2017 à 07:29

Au lieu de faire

if(sum%5||sum%8)
    {
    System.out.println("Lucky Customer");
    }

où la somme% 8 sera vraie pour la valeur 16, alors vous pouvez essayer ceci

int rem=sum%10;
if(rem==5||rem==8)
{
      System.out.println("Lucky Customer");
}
2
pooja patil 15 nov. 2017 à 07:31

Veuillez corriger votre code pour supprimer certaines erreurs de compilation ...

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in= new Scanner(System.in);
        int customerID = in.nextInt();
        int sum = 0;
        while(customerID > 0) {
            int Reminder = customerID % 10;
            sum = sum + Reminder;
            customerID = customerID / 10;   
        }
        if(sum % 5 == 0 || sum % 8 == 0) {
            System.out.println("Lucky Customer");
        } else {
            System.out.println("Unlucky Customer");
        }
        if(sum <0) {
            System.out.println("Invalid Input");
        }
    }
}
1
Sumit Mali 15 nov. 2017 à 07:35

Ce code lève cette exception uniquement si votre entrée contiendrait un point (par exemple: "3.0"). Donc, soit passez la valeur int (par exemple: «3»), soit utilisez scanner.nextDouble () puis convertissez-la en int.

Regardez également la réponse de Yash, car votre code a également d'autres problèmes.

+ n'écrivez jamais les noms de variables avec une majuscule ("Rappel") !!!!

1
Michał Osik 15 nov. 2017 à 07:33
47301598