2016-06-29 24 views
0

Ich benutze Eclipse IDE für Java zu programmieren. Ich schrieb eine Klasse, um zu zeigen, ob ein Name in einer CuncurrentHashMap ist, meine IDE zeigt mir keinen Fehler, aber immer wenn ich mein Programm starte, bekomme ich nicht meine gewünschte Ausgabe. Meine gewünschte Ausgabe ist, dass der Name der Abfrage "Jerry" groß geschrieben wird. Ich lerne nur die Fortschrittsprinzipien in Java, ich bin vertraut mit den grundlegenden Konzepten, aber ich bin offen für jede Korrektur oder Kritik, die Sie gegenüber meinem Programmierstil haben.Warum kann ich die toUpperCase() -Methode für einen String-Parameter nicht verwenden?

package learnJavaPackages; 

import java.util.Scanner; 
import java.util.concurrent.ConcurrentHashMap; 

public class AddEmployee { 

private String newEmployeeName; 
private int empID=0; 

ConcurrentHashMap<String, String> hashHandler = new ConcurrentHashMap<String, String>(); 
Scanner inputHere = new Scanner(System.in); 


public void AddNewEmployee(){ 

    System.out.print("Enter a new employee here: "); 
    newEmployeeName = inputHere.nextLine(); 

    empID++; 
    String empIDstring = Integer.toString(empID); 

    newEmployeeName = newEmployeeName+empIDstring; 
    hashHandler.put(newEmployeeName, empIDstring); 
} 

public void showAddStatus(){ 
    System.out.println(newEmployeeName +", has been added to the  company"); 
} 


public void showIsEmployeeIn(String isEmployee) { 

    isEmployee.toUpperCase(); 

    if(hashHandler.containsKey(isEmployee)){ 
     System.out.println(isEmployee +" is in the Company."); 
    } 
    else{ 
     System.out.println(isEmployee +" is not in the company"); 
    } 
} 

}

main-Methode:

AddEmployee addEmpRef = new AddEmployee(); 
    addEmpRef.AddNewEmployee(); 
    addEmpRef.showAddStatus(); 
    addEmpRef.showIsEmployeeIn("Jerry"); 

Ausgang:

Enter a new employee here: Isaac 
Isaac1, has been added to the company 
Jerry is not in the company 
+0

Hallo @Thilo. Vielen Dank für die Überprüfung dieser Frage. Mit der gebotenen Aufrichtigkeit konnte ich keine ähnliche Frage (zweifach) zu meiner finden. Vielleicht bin ich noch neu in der Art, wie die Dinge hier funktionieren, verzeih mir. –

+0

Der Link zum Duplikat befindet sich in der gelben Box rechts oben auf dieser Seite sowie im Abschnitt "Verknüpft" rechts. – Thilo

Antwort

3

.toUpperCase() eine brandneue Instanz String zurückzugibt, was Sie tun keine Variable zuweisen Just do:

isEmployee = isEmployee.toUpperCase(); 
+0

Danke. Das hat meine Frage beantwortet. Ich musste die brandneue Instanz von String zuweisen. –

3

Zeichenfolge ist unveränderlich. Somit ändert sEmployee.toUpperCase() das Objekt sEmployee nicht. Stattdessen gibt es eine neue String zurück. Verwenden Sie

sEmployee = sEmployee.toUpperCase(); 
0

Strings sind unveränderlich. Als Ergebnis geben alle "mutierenden" Methoden stattdessen den aktualisierten String zurück, und Sie müssen dies aufheben.

isEmployee = isEmployee.toUpperCase();