反向打印前 N 个字符

Print First N characters in reverse

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

像这样

您根本没有在代码中拆分字符串。你需要的是一个.substring()。由于在 StringBuilder 上执行 .substring() 后无法反转单词,因此我们将创建自己的反转方法。试试这个:

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