Java-программа для переворачивания строки не работает? - PullRequest
0 голосов
/ 13 мая 2018

Я написал кусок кода для обращения строки в Java. Тем не менее, он показывает несколько ошибок, и я хочу понять, где я ошибаюсь. Я знаю, что есть альтернативные методы обращения строки. Тем не менее, я хочу знать, где я ошибаюсь с моим кодом.

public class RevString {
public static void main(String[] args)
{
    public Reverse (String str)
    {
        int len = str.length();
        String rev;

        for (int i = 0; i <= len; i++)
        {
                rev = str[i] + rev;
            }
            System.out.println(rev);    
        }
        Reverse("Canyon");
    }
}

Ошибки:

Multiple markers at this line
    - Syntax error on token ")", ; expected
    - Syntax error on token "(", . expected
    - Reverse cannot be resolved to a type
    - Illegal modifier for parameter str; only final is 
The method Reverse(String) is undefined for the type 
 RevString

Может ли кто-нибудь предоставить мне разрешение?

Ответы [ 3 ]

0 голосов
/ 13 мая 2018

В вашем коде много ошибок:

  • Для условия цикла должно быть i < len
  • Строка rev должна быть инициализирована как "" (пустая строка),иначе будет выдано сообщение об ошибке при попытке добавить к нему другую строку.
  • Вы не можете получить доступ к символам в строке, используя str [i], вместо этого используйте str.charAt (i).
  • Вы пытаетесь инициализировать функцию (Reverse) внутри другой функции (main), вы должны инициализировать ее вне главной функции.

Кроме того, вот простой однострочный элемент для обращения строки:

new StringBuilder(str).reverse().toString()

Хорошим советом может быть использование класса StringBuilder всякий раз, когда вы хотите выполнить какие-либо манипуляции со строками в Java.

0 голосов
/ 13 мая 2018

Пожалуйста, смотрите код ниже:

public class Hello {

    public static String reverse (String str){
        int len = str.length();
        String rev="";

        char[] strArray = str.toCharArray();

        for (int i = 0; i < len; i++)
        {
            rev = strArray[i] + rev;
        }

        return rev;
    }

    public static void main(String[] args) {

        String result = reverse("Canyon");
        System.out.println("Reversed String: " + result);
    }
}
0 голосов
/ 13 мая 2018

В вашем коде много проблем:

  • Вы объявляете метод Reverse() внутри метода main.
  • Вам также нужно инициализировать rev пустой строкой.
  • Вы можете использовать str.charAt(i) для доступа к каждому символу строки.
  • Ваш цикл for выходит за пределы строки, если вы используете i <= len;, поэтому он должен быть i < len;.
  • Ваш Reverse() метод должен быть static, так как вы вызываете его в main методе (то есть static)

Вот рабочий код.

public class RevString {
    public static void main(String[] args) {
        Reverse("Canyon");        
    }

    public static void Reverse (String str) {
        int len = str.length();
        String rev="";

        for (int i = 0; i < len; i++) {
            rev = str.charAt(i) + rev;
        }
        System.out.println(rev);    
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...