Ошибка выхода индекса строки из диапазона — как мне напечатать эту строку по вертикали в java?

#java #methods #char #vertical-text

#java #методы #символ #вертикальный текст

Вопрос:

Я пытаюсь напечатать оператор по вертикали, а затем обратно по вертикали с двумя классами, чтобы я мог практиковать несколько навыков. Однако, к сожалению, я не могу заставить свою программу работать и продолжаю получать «ошибку выхода индекса строки из диапазона». Я не уверен, что неправильно вызываю свои функции, потому что я новичок в 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);
    }
}

  

Комментарии:

1. Как насчет того, чтобы посмотреть на свою логику verPrint , следовать ей и записать, какие значения i будут приниматься.

2. Кроме того, ни один из ваших print методов не выполняет никакой печати, поэтому, если бы они работали, вы бы не увидели никаких выходных данных.

Ответ №1:

Проблема с вашим решением заключается в том, что вы обновляете входную строку на первой итерации, присваивая ей символ и новую строку. Следовательно, это не работает для последних итераций. Я внес некоторые изменения в ваш фрагмент. Вы можете следовать за ним —

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

Комментарии:

1. Большое вам спасибо! Теперь я вижу проблему с печатью. Я всегда забываю со статическим методом, что он возвращает и не печатает. Я понимаю, почему нужно было ввести новую переменную, потому что то, как я это сделал, я думаю, запустило бы ее с последней буквы, что не сработало бы. Еще раз спасибо!

2. В любое время! Если это сработало для вас, пожалуйста, отметьте это как ответ. Спасибо!

Ответ №2:

 String s="HELLO";
        char[] y=s.toCharArray();
        for (char x : y) {
            System.out.println(x);
        }
  

ВЫВОД
H
E
L
L
O

 String S="Hello";
        S=new StringBuffer(S).reverse().toString();
        System.out.println(S);
char[] y=S.toCharArray();
            for (char x : y) {
                System.out.println(x);
            }
  

Вы знаете вывод

Ответ №3:

в ваших условиях возникают проблемы при проверке длины и индекса параметра x string:

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

        System.out.println(verPrint("treasure"));
        System.out.println("-----------");
        System.out.println(backPrint("treasure"));
    }

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