2017-04-20 4 views
-3

J'écris un code Java par lequel je dois calculer une sommation en utilisant 2 valeurs d'entrée données. Je crée une méthode dans une classe Sum. Le nom de la méthode est totalVal. Maintenant, dans la classe principale, je veux l'appeler dans un cas de commutation statement.I je décris mon code dans le Way- suivantAppel d'une méthode dans la classe principale ne fonctionnant pas avec Java

Au début, je l'ai créé une classe enum avec deux valeurs constantes,

public enum Product { 
FIRST(400), SECOND(500); 

private int value; 

private Product(int value){ 
    this.value=value; 
} 
public int getValue() { 
    return value; 
} 
} 

maintenant Dans la classe model j'appelle cette classe enam et crée une autre valeur nommée num et set getter et setter pour cela.

public class Model { 
    private Product prod; 
    private int num; 

    public Product getProd() { 
    return prod; 
    } 
    public void setProd(Product prod) { 
     this.produkte = produkte; 
    } 
    public int getNum() { 
    return num; 
    } 
    public void setNume(int num) { 
     this.prod = prod; 
    } 
} 

Maintenant, je créer une autre classe pour la méthode de calcul

public class Sum{ 
    public int totalVal(Model mod){ 
    int sum = mod.getNum()*mod.getProd().getValue(); 
    return sum; 
    } 
} 

maintenant dans la principale méthode que je veux mettre en valeur de num et mettre en œuvre une déclaration de cas de commutation, de sorte que lorsque l'utilisateur choisir d'abord, il sera donne un résultat avec multiplier par la valeur num. d'autre part, si l'utilisateur choisit SECOND, il donnera un résultat avec multiplier par la valeur num. mais j'ai un problème dans la méthode de cas de commutation, il montre une erreur d'exception de poi nulle. Je l'ai décrit plus clairement dans le code-

public static void main(String[] args) { 

    Scanner sc1 =new Scanner(System.in); 
    Scanner sc2 =new Scanner(System.in); 
    System.out.println("1\tFirst: 400\n2\tSecond: 700 "); 
    System.out.println("Please choose your 1 for Compact and 2 for product"); 
    int swichValue=sc1.nextInt(); 
    Model md=new Model(); 
    System.out.println("enter number"); 
    md.setNum(sc2.nextInt()); 
    switch(swichValue){ 
    case 1:{ 
     Sum tot=new Sum(); 
     int res=Product.FIRST.getValue()*tot.Sum(md); //having problem here I am not sure how to call the method here. 
     System.out.println("total value is : "+res); 
     break; 
     } 
     case 2:{ 
     int res=Product.SECOND.getValue()*tot.Sum(md);// problem 
     System.out.println("total value is : "+res); 
     break; 
     } 
    } 
} 
+0

tot.Sum -> tot.totalVal (mod) et qu'est-ce que "mod"? ne devrait pas être "md" là-bas? – iMysak

+0

@iMysak J'ai modifié. mais a toujours l'erreur java.lang.NullPointerException – hina

+0

Montrez-nous la trace de la pile pour le NPE. Il vous dira sur quelle ligne il s'est produit, ce qui aide tellement en essayant de le comprendre ... – AHungerArtist

Répondre

1

regard sur la méthode totalVal (..)

int sum = mod.getNum()*mod.getProd().getValue(); 

En fait, je crois que vous y avez NPE. mod devrait ne pas Null et mod.getProd devrait renvoyer Product mais pas null.

Je ne vois pas où vous asign asign produit à votre objet md.

UPD.

vous n'avez pas besoin de deux scanners, vous pouvez faire la même chose avec un seul.

UPD.2

je suppose au lieu de

int res=Product.FIRST.getValue()*tot.Sum(md); 

vous voulez écrire

md.setProd(Product.FIRST); 
int res = tot.Sum(md); 

et similaire dans un autre interrupteur cas.

+0

Merci pour votre réponse. mais je suis nouveau en Java. Pourriez-vous s'il vous plaît me dire ce que je peux faire dans ce cas. Dois-je donner une valeur à mod.getProd – hina

+0

Je ne suis pas sûr. Y at-il un problème d'écriture dans cette ligne int res = .tot.Sum (md); – hina

+0

oui, retirer le point avant "tot". – iMysak