Напечатать первые N символов в обратном порядке

import java.util.Scanner;

public class Hello {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int N = sc.nextInt();
        StringBuilder sb = new StringBuilder(str);
        System.out.print(sb.reverse().toString());
    }
}

вывод должен быть: -

apple
3

ppa

но я получаю полную строку в обратном порядке

elppa

так

Просто добавьте подстроку str, прежде чем поместить ее в StringBuilder

Federico klez Culloca 21.12.2020 17:54

Какая польза от "int N = sc.nextInt();" если вы нигде не используете N? Я предполагаю, что это какая-то «само-слепая» проблема, над которой вы будете смеяться, когда внимательно посмотрите на нее.

Gyro Gearloose 21.12.2020 17:55
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
3 117
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы вообще не разбиваете строку в своем коде. То, что вам нужно, это .substring(). Поскольку вы не можете обратить слово после выполнения .substring() в StringBuilder, мы просто создадим собственный обратный метод. Попробуй это:

import java.util.Scanner;

public class Hello {

  public static void main(String[] args) {
    Scanner sc = new Scanner(System. in );
    String str = sc.nextLine();
    int n = Integer.parseInt(sc.nextLine());
    System.out.print(reverse(str.substring(0, n)));
    sc.close();
  }
  public static String reverse(String text) {
    return new StringBuilder(text).reverse().toString();
  }
}

Используя строго методы StringBuilder (как вы просили), вы можете сделать:

import java.util.Scanner;

public class SplitReverse {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int n = Integer.parseInt(sc.nextLine());
        StringBuilder sb = new StringBuilder(str);
        sb=new StringBuilder(sb.substring(0,n));
        System.out.println(sb.reverse());
        sc.close();
    }
}

Тем не менее, я бы порекомендовал этот:

import java.util.Scanner;

public class SplitReverse {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int n = Integer.parseInt(sc.nextLine());
        StringBuilder sb = new StringBuilder(str.substring(0,n));
        System.out.println(sb.reverse());
        sc.close();
    }
}

Попробуйте этот код. Я решил ту же проблему, я понял это правильно.

import java.util.Scanner;

public class Hello {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int N = sc.nextInt();
        StringBuilder sb = new StringBuilder(str.substring(0,N));
        System.out.print(sb.reverse().toString());
    }
}

Другие вопросы по теме