0

複数のスキルを練習できるように、ステートメントを縦方向に印刷してから、2 つのクラスで縦方向に逆方向に印刷しようとしています。ただし、イライラすることに、プログラムを動作させることができず、「文字列インデックスが範囲外のエラー」が発生し続けます。私はJavaが初めてなので、関数の呼び出しを間違えているかどうかはわかりません。

class Main {
  public static void main(String[] args) {

    MyString.verPrint("treasure");
    MyString.backPrint("treasure");

  }
}



public class MyString {
    
    public static String verPrint(String x){
      int i = x.length();
    while(0 < i){
      x = x.charAt(i) + "\n";
      i++;
    }
      return(x);
    }
      
    public static String backPrint(String x){
        int i = x.length() - 1;
      while(i >= 0){
          i--;
          x = x.charAt(i) + "\n";
        }
      return(x);
    }
}

4

3 に答える 3

0

ソリューションの問題は、文字と改行を割り当てて最初の反復で入力文字列を更新していることです。したがって、後者の反復では機能しません。あなたのスニペットにいくつかの変更を加えました。あなたはそれに従うことができます -

public class Main {
  public static void main(String[] args) {

    System.out.println(MyString.verPrint("treasure"));
    System.out.println(MyString.backPrint("treasure"));

  }
}

class MyString {

  String x;
    
    public static String verPrint(String x){
      int i = x.length();
      String y = "";
      int j = 0;
      
    while(j < i){
      y += x.charAt(j) + "\n";
      j++;
    }
      return(y);
    }
      
    public static String backPrint(String x){
      int i = x.length() - 1;
      String y = "";
      
    while(i >= 0){
      y += x.charAt(i) + "\n";
      i--;
    }
      return(y);
    }
}
于 2020-11-11T06:19:30.183 に答える