2017-08-02 2 views
0

Ich habe etwas Code und Zeile 33 gibt -1 zurück, weil es den Wert nicht finden konnte. Aber warum findet es es nicht ?! Ich denke, es könnte etwas mit Char [] zu tun haben, aber ich bin mir hier nicht wirklich sicher.Warum gibt dieser Code -1 zurück?

Es könnte auch wegen der Linie 31 (int temp) aber ich weiß es wirklich nicht.

import java.util.Arrays; 
import java.util.HashMap; 
import java.util.Scanner; 

class Main { 

public static void main(String args[]) { 

HashMap<Integer, String> map = new HashMap<Integer, String>(); 

System.out.println("Enter your string to cipher: "); 

Scanner s = new Scanner(System.in); 
String str = s.nextLine(); 

char[] letters = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; 
Integer[] numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25}; 

if (str instanceof String) { 
    System.out.println("Input received: OK."); 
} else { 
    System.out.println("Error! You cannot input numbers. Exiting program..."); 
    System.exit(1); 
} 

for (int i = 0; i < str.length(); i++) { 
    char l = str.charAt(i); 

    System.out.println(l); 

    int temp = Arrays.asList(letters).indexOf(l); 

    System.out.println(temp); 


    } 


    } 

} 
+1

Möglicherweise müssen einen Großbuchstaben in Ihrer Eingabe verwenden möchten. – Zircon

+0

Btw 'char' ist im Wesentlichen ein' int', Sie können zum Beispiel 'l>' a '&& l <' z'' machen. – Rogue

+0

Nein, und selbst wenn ich es hätte, könnte ich es in Kleinbuchstaben konvertieren, also nicht das Problem. – GoldShovel

Antwort

1

Ändern Sie den Typ der Variable ‚Buchstaben‘ zu Character[] und es wird funktionieren.

Bonus Kleiner Optimierungsvorschlag: Verschieben Sie diese Zeile int temp = Arrays.asList(letters).indexOf(l) außerhalb der Schleife, da Sie bei jeder Iteration eine Liste erstellen.

auch entscheiden, ob Sie generische Sammlungen mit Arrays oder Arrays wie char[] usw.

+0

Danke. Kannst du erklären, was char [] nicht funktioniert, aber Character []? – GoldShovel

+0

Character ist ein Objekt, während char ein primitiv ist, also wenn indexOf intern auf Gleichheit testet, testet es, ob ein Character gleich einem Char ist, das immer falsch ist, obwohl es genauso aussieht. – Fminus

+0

Macht vollkommen Sinn. Ich wusste nicht, dass es nach einem Character und nicht nach einem Char sucht. Vielen Dank. – GoldShovel

Verwandte Themen