2016-05-05 8 views
-1

Hallo Ich habe eine Karte Klasse bekam, die eine Mannschaft bekommen hat, und jedes Team kann unterschiedlich sein (Madrid, Barcelona, ​​Juventus, ....): Wenn ich dies tun:Java Fehler NULL

int q=3; 
    Carta a = new Carta(3); 
    System.out.println(a.getTeam().getNom()); 

Es druckt NULL, und ich verstehe nicht warum. Es sollte "borussia.jpg"

public class Carta{// 

     //fcbarcelona 0, madrid 1, manutd 2,borussia,la // 
     private int _identificador; 
     private Team _p; 

     Carta(int num){ 
      _identificador=num; 
      switch(_identificador){ 
      case 0: _p=new Barcelona(); 
      case 1: _p=new Madrid(); 
      case 2: _p=new ManUtd(); 
      case 3: _p=new Borussia(); 
      case 4: _p=new Chelsea(); 
      case 5: _p=new Arsenal(); 
      default: 
    } 
    Team getTeam(){ 
     return _p; 
    } 
    } 


public class Team { 
private ImageIcon _imatgeDav; 
private ImageIcon _imatgeDarrere; 
private String _nom; 

    Team(){} 

    Team(String nom){ 
     _nom=nom; 
     _imatgeDav = (new ImageIcon(nom)); 
     _imatgeDarrere = (new ImageIcon("revers_de_carta.jpg")); 
    } 
    ImageIcon getImatgeRevers(){ 
     return _imatgeDarrere; 
    } 
    ImageIcon getImatgeDavant(){ 
    return _imatgeDav; 
    } 
    String getNom(){ 
     return _nom; 
    } 

drucken Und hier habe ich die differents Teams haben:

public class Madrid extends Personatge{ 
     String nom; 
     public Madrid(){ 
     super("madrid.jpg"); 
     nom="madrid.jpg"; 
    } 

    String getNom(){ return nom;} 
} 
+2

Setzen Sie 'break' zwischen Ihren Fällen und überprüfen Sie, ob' Arsenal' und andere Klassen einen Superkonstruktor korrekt aufruft. –

+2

Sie brauchen 'break;' Anweisungen vor jedem neuen 'case:' in Ihrem Schalter – nhouser9

Antwort

0

2, was im Code ...

1. benötigen Sie eine Pause in der Schaltergehäuse

switch(_identificador){ 
    case 0: 
     _p=new Barcelona(); 
     break; 
    case 1: 
     _p=new Madrid(); 
     break; 
    case 2: 
     _p=new ManUtd(); 
     break; 
    case 3: 
     _p=new Borussia(); 
     break; 
    case 4: 
     _p=new Chelsea(); 
     break; 
    case 5: 
     _p=new Arsenal(); 
    default: 
} 

2.: Sie sind usi ng den falschen Konstruktor von diesem Aufruf:

new Borussia(); 

Sie

new Borussia("Borussia-nom"); 

sonst sind alle Mitglieder der Klasse-Team null Bezug genommen wird, und das wird werfen die Ausnahme, wenn Sie rufen Sie die .getNom() Methode aufrufen müssen Dieses Objekt ...