Java 数组与字符串相反。必须使用数组

Java 数组与字符串相反。必须使用数组,java,Java,如何用我制作的第一个数组的相反字母制作一个数组?例如,如果字符串是“Hello”,我想使用数组打印“olleH”。当我尝试返回变量时,它告诉我“字符串索引超出范围:-1”。谁能告诉我为什么?这是我目前的代码: public class april{ public static void main(String [] args){ System.out.println("What do you want backwards?"); System.out.println("Your new w

如何用我制作的第一个数组的相反字母制作一个数组?例如,如果字符串是“Hello”,我想使用数组打印“olleH”。当我尝试返回变量时,它告诉我“字符串索引超出范围:-1”。谁能告诉我为什么?这是我目前的代码:

public class april{


public static void main(String [] args){

System.out.println("What do you want backwards?");
System.out.println("Your new word is " + reverse(IO.readString()));

}

public static String reverse(String original){

    char [] letters = new char [original.length()];
    char [] opp = new char [original.length()];
    char c= 'a';
    char d= 'a';
    String word= " ";
    String opposite= " ";

    for (int x=0;x<original.length();x++){
        c = original.charAt(x);
        letters[x]= c;
        if (x!=0){
        d = original.charAt(-x-1);
        opp[-x]=d;
        }
        else if (x==0){
        d = original.charAt(-1);
        opp[x]= d; 
        }
        word += letters[x];
        opposite += opp[x];

    }

    return word;
    return opposite;
公共课{
公共静态void main(字符串[]args){
System.out.println(“您想要向后看什么?”);
System.out.println(“您的新词是”+reverse(IO.readString()));
}
公共静态字符串反转(字符串原始){
char[]字母=新字符[original.length()];
char[]opp=新字符[original.length()];
字符c='a';
chard='a';
字串=”;
字符串“”相反;

对于(int x=0;x您就接近了!对于第二个数组,您只需要从
字符串的另一端开始(使用正确的语法):

for(int x=0;x

注意:您还必须减去
1
,因为数组和字符串索引都是0索引的。

很接近!您只需要从第二个数组的
字符串的另一端开始(使用正确的语法):

for(int x=0;x

注意:您还必须减去
1
,因为数组和字符串索引都是0索引的。

我认为这是一种很好的方法

public class Main {

    public static void main(String[] args) {
        String reversed = reverse("Hello");
        System.out.println(reversed);
    }

    private static String reverse(String word) {
        byte[] array = word.getBytes();
        int i = 0;
        int j = array.length - 1;
        byte tmp;
        while (j > i) {
            tmp = array[j];
            array[j] = array[i];
            array[i] = tmp;
            j--;
            i++;
        }
        return new String(array);
    }
}

我认为这是一个很好的方法

public class Main {

    public static void main(String[] args) {
        String reversed = reverse("Hello");
        System.out.println(reversed);
    }

    private static String reverse(String word) {
        byte[] array = word.getBytes();
        int i = 0;
        int j = array.length - 1;
        byte tmp;
        while (j > i) {
            tmp = array[j];
            array[j] = array[i];
            array[i] = tmp;
            j--;
            i++;
        }
        return new String(array);
    }
}

您的方法接收一个
字符串
,并返回另一个
字符串
,因此您根本不需要使用数组,只需使用
StringBuilder
类的
reverse
方法即可

public static String reverse(String original) {
    return new StringBuilder(original).reverse().toString();
}

您的方法接收一个
字符串
,并返回另一个
字符串
,因此您根本不需要使用数组,只需使用
StringBuilder
类的
reverse
方法即可

public static String reverse(String original) {
    return new StringBuilder(original).reverse().toString();
}

我注意到的另一个问题是,对于负片,如果循环为零,我将无法打印出负片0,因为这样的东西不存在。我如何解决这个问题?可以使用StringBuilder&invoke reverse()关于它,我注意到的另一个问题是,对于负片,如果循环为零,我将无法打印出负片0,因为这样的东西不存在。我如何解决这个问题?你可以在它上使用StringBuilder&invoke reverse(),它一直告诉我“无法访问的语句”对于变量opposite@LotunKanji这与我的代码没有任何关系,但听起来你试图在定义的范围之外使用
相反的
。这到底是什么意思?@LotunKanji See:它一直在告诉我“无法到达的语句”对于变量opposite@LotunKanji这与我的代码没有任何关系,但听起来你试图在定义的范围之外使用
相反的
。这到底是什么意思?@LotunKanji看到: