2016-06-29 3 views
0

Я использую Eclipse IDE для программирования java. Я написал класс, чтобы показать, является ли имя в CuncurrentHashMap, моя IDE не показывает мне никаких ошибок, но всякий раз, когда я запускаю свою программу, я не получаю желаемого результата. Мой желаемый результат заключается в том, чтобы имя запроса «Джерри» было заглавным. Я только изучаю принципы продвижения в java, я знаком с базовыми понятиями, но я открыт для любой коррекции или критики, которые у вас есть по отношению к моему стилю кодирования ниже.Почему я не могу использовать метод toUpperCase() для параметра String?

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"); 
    } 
} 

}

Основной метод:

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

выход:

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

Hi @Thilo. Спасибо, что рассмотрели этот вопрос. С должной искренностью я не мог найти вопрос, похожий (дубликат) на мой. Может быть, я еще новичок в том, как все работает здесь, простите меня. –

+0

Ссылка на дубликат включена в желтый квадрат в верхней части этой страницы, а также в разделе «Связанные» справа. – Thilo

ответ

3

.toUpperCase() возвращает новый экземпляр String, что вы делаете не назначать какой-либо переменной. Просто выполните:

isEmployee = isEmployee.toUpperCase(); 
+0

Спасибо. Это ответило на мой вопрос. Мне нужно было назначить новый экземпляр String. –

3

Строка неизгладимая. Таким образом, sEmployee.toUpperCase() не изменяет объект sEmployee. Вместо этого он возвращает новый String. Использовать

sEmployee = sEmployee.toUpperCase(); 
0

Строки неизменяемы. В результате все «мутирующие» методы вместо этого возвращают обновленную строку, и вам нужно ее поднять.

isEmployee = isEmployee.toUpperCase();