J'ai trois classes, Main
:Exception essayant de traiter les entrées utilisateur
public class Main {
public static void main(String []args){
UserData myData = new UserData();
SolveMath myMath = new SolveMath();
myMath.findLength();
}
}
UserData
(gets l'entrée utilisateur):
import java.util.Scanner;
public class UserData {
private double side1;
private double side2;
private double side3;
private double weight;
public UserData(){
Scanner scan = new Scanner(System.in);
System.out.println("Enter side one:");
side1 = scan.nextDouble();
System.out.println("Enter side two:");
side2 = scan.nextDouble();
System.out.println("Enter side three:");
side3 = scan.nextDouble();
System.out.println("Enter weight:");
weight = scan.nextDouble();
}
public double getSide1(){
return side1;
}
public double getSide2(){
return side2;
}
public double getSide3(){
return side3;
}
public double getWeight(){
return weight;
}
}
Et SolveMath
(qui tente jusqu'à présent seulement pour trouver le plus grand côté):
public class SolveMath {
private double length;
UserData userData;
public void findLength(){
if(userData.getSide1() > userData.getSide2() && userData.getSide1() > userData.getSide3()){
length = userData.getSide1();
}else if(userData.getSide2() > userData.getSide1() && userData.getSide2() > userData.getSide3()){
length = userData.getSide2();
}else if(userData.getSide3() > userData.getSide1() && userData.getSide3() > userData.getSide2()){
length = userData.getSide3();
}
System.out.println(length);
}
}
Quand je compile je reçois cette erreur (erreur de note se produit après que toutes les entrées ont été données):
Exception in thread "main" java.lang.NullPointerException
at eval.user.data.SolveMath.findLength(SolveMath.java:17)
at drivers.Main.main(Main.java:17)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Process finished with exit code 1
Suis-je manque quelque chose quand j'essaie de trouver le plus grand côté?
Quelle ligne est 'SolveMath.java: 17'? – ssantos
Parce que vous n'avez pas initialisé 'UserData' dans la classe' solveMath' – SRy
Vous devez injecter 'UserData' dans' SolveMath' – nachokk