我有一些代碼,第33行返回-1,因爲它找不到值。但爲什麼它沒有找到它?我認爲這可能與char []有關,但我在這裏確實不太確定。這段代碼爲什麼返回-1?
這也可能是因爲線路31(INT TEMP),但我真的不知道。
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);
}
}
}
你可能在你的輸入大寫字母也決定。 – Zircon
順便說一句'char'本質上是一個'int',可以例如做'升>「一個」 &&升<「z''。 – Rogue
不,甚至如果我做了我可以將它轉換爲小寫,所以不是問題。 – GoldShovel