[英]Why doesn't my String comparison code work?
該代碼拋出
錯誤“線程“主”中的異常” java.lang.ArrayIndexOutOfBoundsException:0
在basic2.compareStrPractice.main(compareStrPractice.java:15)“
int i;
char[] chr1 = {};
char[] chr2 = {};
String s1 = "man";
String s2 = "nam";
for ( i= 0; i<s1.length(); i++){
chr1[i] = (char)s1.charAt(i);
chr2[i] = (char)s2.charAt(i);
}
if ((chr1[0] == chr2[2]) && (chr1[1] == chr2[1]) && (chr1[2] == chr2[0])){
System.out.println("They are Palindrom!");
}
}
我想打印對帳單。 但它引發ArrayOutOfBoundary錯誤。
問題是您聲明字符數組的方式。
char[] chr1 = {};
數組的定義方式為大小為0。
在Java中,您需要像這樣指定數組的大小:
char[] chr1 = new char[3];
它所做的是聲明一個預定義大小為3的char數組。
如果您嘗試編寫回文代碼,則在許多方面都錯了,但是對於該錯誤,您正在初始化一個大小為0的char空數組,請使用此方法
char[] chr1 = new char[3];
您還應該首先檢查長度以確保長度相同。 否則,您可能會得到另一個ArrayIndexOutOfBoundsException
。 當您使用較長的字符串長度來索引較短的字符數組時,就會發生這種情況。
由於對於較長的字符串,您不想在單個if
語句中進行多次比較,因此應使用循環並從一個數組的開頭和另一個數組的結尾開始進行比較。 因此,如果長度為5,則可以比較0和4,然后1和3,然后2和2,然后3和1等的字符。
這里有一些其他提示可能會有所幫助。 您無需創建空數組並填充它們。 字符串提供了該功能。
char[] chr1 = s1.toCharArray();
實際上,您不需要分配給String變量。
char[] chr1 = "man".toCharArray();
萬一您想分配給String而不是char數組,可以執行此操作以保存單個字符串數組。
String[] str1 = "abcdefghijklmnopqrstuvwxyz".split("");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.