2016-10-24 2 views
1

Я ищу помощь, создающую хэш-функцию, которая будет принимать пользовательские данные, введенные из строки, и преобразовывать их в целочисленное значение, при этом пропуская пробелы. Я в тупике о том, почему он не работает, и как получить его, чтобы получить пробелы, которые могут быть введены, и будет благодарна за помощь.Java: Hash Function Введенные строки

Код:

public static void main(String[] args) { 
    Scanner inScan; 
    String inStr; 
    int outHash; 

    inScan = new Scanner(System.in); // Assignment of Scanner 

    System.out.print("Enter string to create hash: "); // Asks for String Input 
    inStr = inScan.nextLine(); // String Input 

    // Start of Hash Function 
    String hashValue = inStr; 
    hashValue = inStr.hashCode(); 
    System.out.println(hashValue); 
+0

Что не работает? –

+0

Что не работает? Какой результат вы ожидаете и что получаете? Какое точное сообщение об ошибке вы видите? – puhlen

+0

Я ожидаю, что какой-то результат целых чисел будет зависеть от ввода строки. – Aramza

ответ

1

Ваш код вызывает hashCode() на неизмененном inStr. Вы должны очистить пробелы из inStr перед вызовом hashCode, чтобы убедиться, что хэш-коды строк, которые отличаются только в белом пространстве идентичны:

String a = "a bc"; 
String b = "ab c"; 
String c = "a b c"; 
int hashA = a.<remove-white-space>.hashCode(); 
int hashB = b.<remove-white-space>.hashCode(); 
int hashC = c.<remove-white-space>.hashCode(); 

<remove-white-space> то, что вам нужно написать. Обратитесь за помощью в службу поддержки this Q&A.

Если вы выполняете свою задачу правильно, hashA, hashB и hashC будут равны друг другу.