亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我的字符串比較代碼不起作用?

為什么我的字符串比較代碼不起作用?

POPMUISE 2022-12-15 16:19:14
這段代碼拋出錯誤“線程“main”中的異常 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 錯誤。
查看完整描述

3 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

問題是您聲明字符數組的方式。

char[] chr1 = {};

你這樣做的方式是用 0 的大小定義數組。

在 Java 中,您需要像這樣指定數組的大小:

char[] chr1 = new char[3];

它的作用是聲明一個預定義大小為 3 的 char 數組。


查看完整回答
反對 回復 2022-12-15
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

如果你正在嘗試為回文寫代碼,它在很多方面都是錯誤的,但對于錯誤,你正在初始化一個 0 大小的空數組,使用這個

char[] chr1 = new char[3];


查看完整回答
反對 回復 2022-12-15
?
鴻蒙傳說

TA貢獻1865條經驗 獲得超7個贊

您還應該首先檢查長度以確保它們相同。否則,您可能會得到另一個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("");


查看完整回答
反對 回復 2022-12-15
  • 3 回答
  • 0 關注
  • 97 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號