2017-02-15 3 views
-5

Ich habe gerade angefangen, Java zu lernen und schrieb einen sehr schlechten Code.Ich bin mir ziemlich sicher, es gäbe einen besseren Weg, um den Code zu schreiben. Kann mir jemand erklären, warum dieser Code mir den Ausgang zu geben: "nullnull"Ich wollte nur zwei Strings in Java verketten

public class Hello { 

    public String a; 
    public String b; 
    public String c; 

    public Hello() { 
     c = ""; 
    } 

    public String helloWorld() { 
     return c; 
    } 

    public String hello() { 
     a = "Hello"; 
     return a; 
    } 

    public String world() { 
     b = "World"; 
     return b; 
    } 

    public void join() { 
     c = a + b; 
    } 
} 
+4

sieht aus wie Sie Methode aufgerufen beitreten, bevor andere Methoden aufrufen. Zeigen Sie uns die vollständigen Codes –

+0

Dieser Code würde Ihnen überhaupt keine Ausgabe geben. Du rufst keine Methoden an, es sei denn, es gibt ein 'main', das du nicht gepostet hast. – khelwood

+0

'Join()' muss nach dem tatsächlichen Setzen der Werte aufgerufen werden, was in Ihrem Fall höchstwahrscheinlich nicht erfolgt. – vegaasen

Antwort

1

In DrJava Sie die Methoden in der folgenden Reihenfolge aufrufen müssen:

  • Hallo d = new hallo();
  • d.hello();
  • d.world();
  • d.join();
  • d.helloWorld();

oder ändern Sie die helloworld Funktion:

public String helloWorld() { 
    hello(); 
    world(); 
    join(); 
    return c; 
} 

Die a und b Saiten sind noch nicht festgelegt (weil man sie in hello() und world() gesetzt) ​​daher, wenn Sie join() nennen, sie sind immer noch eine Null Wert.

+0

Danke Kumpel, das hat einfach funktioniert, ohne meinen Code zu ändern. – Reboot

+0

Das ist nur das perfekte Beispiel für das Aufrufen von Klasseninstanzen innerhalb derselben Klasse. Ihre Antwort hat mir geholfen, das Konzept zu verstehen. Prost! – Reboot

1

Dies ist eine einfache Lösung

package com.fred.code; 

public class concat { 

    public static void main(String[] args) { 
     String a = "hello"; 
     String b = "world"; 
     System.out.println(a + b); 
    } 

} 
+0

Vielen Dank für Ihre Antwort, ich wollte nur untersuchen, wie die Instanz der Klasse innerhalb der Klasse funktioniert. – Reboot