[英]Reverse String Program
我用C ++編寫了一個簡短的String反向程序。 我決定用Java編寫它,所以我做到了。 但是,一旦完成編寫程序,就會遇到一些我試圖修復但無法修復的錯誤。 錯誤之一是ArrayOutOfBounds異常。 請幫助我修復錯誤。 C ++程序運行良好。 以下是Java代碼。 請注意,我不想使用內置函數。
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
String word;
int i = 0;
boolean inp = true;
System.out.println("Enter one or more words to be reversed:");
word = scan.nextLine();
char wordArray[] = word.toCharArray();
while(wordArray[i]!='\0')
i++;
while(inp == true){
i--;
System.out.println(wordArray[i]);
if(i==0){
System.out.println();
break;
}
}
}
}
Java字符串中沒有以null結尾的字符; 他們有一個length()
方法,您應該使用它來確定長度。
而且, while
循環更習慣於:
while (true) {
...
}
或作為簡單的for
循環。
這是另一種可能,可能更簡單:
public String reverse(String str) {
char[] chars = str.toCharArray();
int n = chars.length;
for (int i = 0; i < n/2; i++) {
char tmp = chars[i];
chars[i] = chars[n-i-1];
chars[n-i-1] = tmp;
}
return new String(chars);
}
盡管您提到不想使用內置函數,但最慣用的方式是:
public String reverse(String str) {
return new StringBuilder(str).reverse().toString();
}
java中的字符串不一定以null終止,您應該使用String.length()方法來找出它的長度。
Java字符串不是零結尾的,因此從字符串創建的字節數組也不是零。 您使用循環來確定數組的長度,但是該循環找不到值0的字節,因此它超出了范圍。 請改用word.length()
。
第二件事:您使用System.out.println
打印字符-在每個字符后插入一個換行符。 這是故意的嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.