2015-03-05 10 views
6

Ich versuche ein Konto in Codewars zu bekommen und war überrascht, dass Sie ihnen zeigen müssen, dass Sie Grundkenntnisse in einer der angebotenen Programmiersprachen haben. Ich entschied mich für Java, blieb aber in den Übungen hängen. Der Code ist:Registrieren Codewars

public class Person { 
    String name; 

    public Person(String personName) { 
     name = personName; 
    } 

    public String greet(String yourName) { 
     return String.format("Hi %s, my name is %s", yourName, name); 
    } 
} 

Es heißt: "diesen Code korrigieren, so dass die greet Funktion den erwarteten Wert zurückgibt". Die Sache ist, ich sehe den Fehler nicht und tatsächlich habe ich den Code nach Eclipse kopiert, und nachdem ich den Java-Compiler geändert und Version 1.6 verwendet habe, funktioniert der Code, kein Fehler und wenn Sie es mit einer Hauptmethode versuchen, gibt es den erwarteten Wert zurück.

Wenn sie nur sagen, was der erwartete Wert ist ... Beim Einreichen, egal was ich versuche, bekomme ich immer "Der Code funktioniert nicht wie erwartet".

Irgendwelche Ideen?

+3

Ja, Sie sollten tun 'return String.format (" Hallo% s, mein Name ist% s ", Name, IhrName);'. Der Code, den sie geben, ist syntaktisch richtig, aber sie erwarten, dass Sie den anderen Weg begrüßen. –

+0

Keine Worte ... hahahaa. Vielen Dank Alter! – Fernando

+1

Ich vermute, sie wollen, dass Sie die Werte in der 'String.format()' tauschen, obwohl es ziemlich zweideutig ist. Die Methode gibt nicht an, ob Sie die Person oder die Person begrüßen, die Sie begrüßt ... – David

Antwort

11

Sie haben Recht; dieser Code ist korrekt wie geschrieben, und die Codewars-Leute sind Dummköpfe. Wahrscheinlich möchten Sie, dass Sie die Namen in die andere Richtung wechseln.

Die OO-Metapher für den Aufruf einer Funktion an einem Objekt und die Übergabe eines Arguments lautet "Das Objekt anweisen, die Aktion für das gegebene Objekt auszuführen". Mit anderen Worten, wenn das Objekt Jim ist, dann sagt Jim.greet("Joe") Jim, Joe zu begrüßen, und "Hi, Joe, mein Name ist Jim" ist das Richtige zu tun.

Eigentlich, da Gruß wirklich eine Kommunikation zwischen zwei Personen ist, die wirkliche richtige Sache zu tun keine String-Namen greet passieren, aber ein Person zu passieren, und hat greet Anruf, dass Person ‚s beGreeted() Methode.

+0

Zustimmen. Fragen wie diese sind schrecklich. – michaelgulak

2

Die Antwort ist: Justyou zwei Variablen in String.format() zu tauschen.

Frage:

Rückkehr String.format ("Hallo% s, mein Name ist% s", name, yourname);

Antwort:

Rückkehr String.format ("Hallo% s, mein Name ist% s" ihr_name, name);

public class Person 
{ 
    String name; 
    public Person(String personName){ 
    name = personName; 
    } 
    public String greet(String yourName) 
     { 
     return String.format("Hi %s, my name is %s", yourName,name); 
     } 
    }