[英]Java reverse string method
我想学习Java。 我需要制作一个称为reverse的方法,该方法获取一个字符串并返回一个字符串(但顺序相反)。 这是我尝试过的。 您能修复代码并解释我做错了什么吗? 还请给我一些有关Java入门的建议。 谢谢!
public class Test{
public static String reverse(String a){
int j = a.length();
char[] newWord = new char[j];
for(int i=0;i<a.length();i++)
{
newWord[j] = a.charAt(i);
j--;
}
return new String(newWord);
}
public static void main(String a[]){
String word = "abcdefgh";
System.out.println(reverse(word));
}
}
您可以使用它来反转字符串,而无需使用自己的方法
new StringBuilder(word).reverse().toString()
如果要使用解决方案,则必须将int j = a.length()更改为int j = a.length()-1;
固定代码是
public class Test {
public static String reverse(String a) {
int j = a.length();
char[] newWord = new char[j];
for (int i = 0; i < a.length(); i++) {
newWord[--j] = a.charAt(i);
}
return new String(newWord);
}
public static void main(String a[]) {
String word = "abcdefgh";
System.out.println(reverse(word));
}
}
就像其他人提到的那样,数组索引从0开始。因此,例如,如果数组的大小为5,则其索引为0、1、2、3、4。 它没有索引5。
对于长度为5的字符串的示例,我所做的代码更改为newWord[--j] = a.charAt(i);
将按该顺序分配给索引4,3,2,1,0。
关于Java的良好开端,我认为您可以尝试https://softwareengineering.stackexchange.com/ 。 该网站不适合这种事情。
对于新的Java开发人员来说,这是一个常见的困难。
您缺少的一点是, 数组中的最后一个条目位于a.length-1
位置 。 对于Strings
这是一个改进的版本来演示。
public static String reverse(String a) {
char[] newWord = new char[a.length()];
for (int i = 0, j = a.length() - 1; i < a.length(); i++, j--) {
newWord[j] = a.charAt(i);
}
return new String(newWord);
}
您的方法已经在正确的轨道上。 我要对您说的一件事是,您不需要使用字符数组,而是使用诸如return new String(newWord);
类的东西return new String(newWord);
。 在我看来,这对于初学者Java来说过于复杂。
取而代之的是,您可以创建一个空字符串,并在循环查找要反转的字符串中的所有字符时,将字符附加在其上。
所以,你for
循环,因为你倒车的话,应该在单词的末尾开始被逆转( a
在这种情况下)和向后工作,以索引位置0(即这个词开始被逆转)。
尝试一下,看看这是否对您有意义:
public static String reverse(String a) {
String reversedWord = "";
for (int index = a.length() - 1; index >= 0; index --) {
reversedWord += a.charAt(index);
}
return reversedWord;
}
这一点,那么,在开始的最后a
,在时间(因此使用的工作向后一个字符index --
直到我们到达一个点, index
已经索引位置为0(中间状态超出了字符index >= 0
)。
在每个索引位置,我们只是从拍摄的字符a
字符串并将其附加到reversedWord
字符串。
希望这可以帮助! 如果您坚持下去,请随时提出任何其他问题。
在您的for
循环中,主体必须为newWord[--j] = a.charAt(i);
。 这是因为如果数组的长度为8,则其索引为0-7。 因此,我们首先递减j
,然后将其用作数组指针。
public class Test {
public static String reverse(String a) {
int size= a.length();//size of string
char[] newWord = new char[size];//intialize
for (int i = size-1,j=0; i >=0 ; i--,j++) {//loop start from 7 to 0
newWord[j] = a.charAt(i);// and reverse string goes from 0 to 7
}
return new String(newWord);
}
public static void main(String a[]) {
String word = "abcdefgh";
System.out.println(reverse(word));
}
}
static void reverse {
String word = "Hello World";
StringBuilder str = new StringBuilder(word);
str.reverse();
System.out.println(str);
}
或者你可以做
new StringBuilder(word).reverse().toString()
public static void main(String[] args) {
String input = "hello world";
String output = new String();
for (int i = input.length() - 1; i >= 0; i--) {
output = output + input.charAt(i);
}
System.out.println(output);
}
package Reverse;
import java.util.*;
public class StringReverse {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter a String: ");
String original = input.nextLine();
String rev = "";// Initialize as Empty String
for(int i = original.length() - 1 ; i>=0 ; i--){
rev += original.charAt(i);
}
System.out.println("Reverse form: "+rev);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.