【问题标题】:Array opposite string. Must use arrays [duplicate]数组相反的字符串。必须使用数组[重复]
【发布时间】:2018-09-17 15:10:51
【问题描述】:

我如何用我正在制作的第一个数组的相反字母制作一个数组?例如,如果字符串是“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;

【问题讨论】:

  • 我注意到的另一个问题是,对于负数,如果循环为零,我将无法打印出负数 0,因为这样的事情不存在。我该如何解决这个问题?
  • 您可以使用 StringBuilder 并在其上调用 reverse()

标签: java


【解决方案1】:

你已经接近了!您只需要从 String 的另一端开始第二个数组(使用正确的语法):

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

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

【讨论】:

  • 它一直告诉我变量相反的“无法访问的语句”
  • @LotunKanji 这与我的代码没有任何关系,但听起来您正在尝试在其定义的范围之外使用opposite
  • 这到底是什么意思?
【解决方案2】:

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

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);
    }
}

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-10-16
      • 2021-11-13
      • 2020-05-15
      • 1970-01-01
      • 2019-12-29
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      相关资源
      最近更新 更多