【问题标题】:I need to take the first N characters from the input我需要从输入中取出前 N 个字符
【发布时间】:2018-11-20 20:45:00
【问题描述】:

我刚刚开始学习 Java。我需要从输入中取出前 N 个字符。输入包括输入字符串开头的字符数,然后是字符。输出包括开头的数字。

例如,如果用户输入“3stars”,输出将是“3st”,或者输入“7appendices”输出将是“7append”。

尝试了以下方法:

  Scanner input = new Scanner(System.in);
      System.out.print("Please enter a uncoded string: ");
      String first = input.nextLine();
      input.close();

      if (first.charAt(0) == 'u') {
          first = first.toUpperCase();
      } else if (first.charAt(0) == 'l') {
          first = first.toLowerCase();
      } else if (first.charAt(0) == 'e') {
            String str = "";
            for (int i = 0; i < first.length(); i = i + 2) {
                str += first.charAt(i);
            }
            first = str;
        } else if (first.charAt(0) == 'o') {
            String str = "";
            for (int i = 1; i < first.length(); i = i + 2) {
                str += first.charAt(i);
            }
            first = str;
        } else if (first.charAt(0) == 1++) {
            String str = "";
            for (int i = 1++ ; i < first.length(i); i = i charAt(i)) {
                str += first.charAt(i);
            }
            first = str;

任何帮助都会很棒。

【问题讨论】:

  • 请包含您尝试过的完整代码,而不仅仅是中间的这个块。
  • 是最后一个“if else”部分。
  • str.substring(0, str.charAt(0) - '0')

标签: java numbers output


【解决方案1】:

我希望这会有所帮助:

int num = Character.getNumericValue(first.charAt(0));

String str = "";
for(int i = 0;i < num;i++){
   str += first.charAt(i);
}
System.out.println(str);

【讨论】:

  • 如何将其合并到“else if”中。只是得到一个错误。 “str += first,charAt(i)”也是调整输出的部分吗?
  • "如果用户输入 "3stars",输出将是 "3st"" => 我发布的代码是这样做的:D
  • 刚开始,最后的“else if”会怎样:}
  • } else int num = Character.getNumericValue(first.charAt(0));字符串 str = ""; for(int i = 0;i
  • 也谢谢你。
【解决方案2】:

这也适用于像 11abcdefghijklmnopqrstuvwxyz 这样的数字大于 9 的输入

public static void main(String[] args) {
    String input = "7appendices";
    // match numbers
    Pattern p = Pattern.compile("^([0-9]+)");
    // by default at least the integer has one digit
    int digits = 1;
    int length = 0;
    // while the beginning of the input match an integer
    while (p.matcher(input.substring(0, digits)).matches()) {
        // set length as the integer at the beginning
        length = Integer.parseInt(input.substring(0, digits));
        // increase the amount of digits from the integer in the input
        digits++;
    }
    System.out.println(input.substring(0, length));
}

您只需像这样将输入替换为scanner

 String input = new Scanner(System.in).next();

【讨论】:

    猜你喜欢
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2017-02-13
    • 2019-07-23
    • 1970-01-01
    • 2017-02-17
    • 1970-01-01
    相关资源
    最近更新 更多