【问题标题】:When I split a String input into an array, the array only has 1 Element. Why is that?当我将字符串输入拆分为数组时,该数组只有 1 个元素。这是为什么?
【发布时间】:2014-08-12 03:09:33
【问题描述】:

当我将一个字符串输入拆分为一个数组时,该数组只有 1 个元素。这是为什么?从昨天开始就一直在这,我还没有找到解决方案。我用它来帮助我一点Splitting String and put it on int array

class ISBNcheck2 {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        System.out.print("Enter input: "); //ask for input
        String input = keyboard.nextLine(); // read input
        int length = input.length();

        String[] strArray = input.split(" "); //<---- THIS IS A PROBLEM, MY GUESS.
        // SOMEHOW strARRAY and intARRAY ONLY HAVE 1 ELEMENT STORED.?????

        int[] intArray = new int[strArray.length];
        for (int i = 0; i < strArray.length; i++) {
            intArray[i] = Integer.parseInt(strArray[i]);
        }

        for (int i = 0; i < intArray.length; i++) {
            System.out.println(intArray.length); // just a check
            System.out.println(intArray[i]); // just a check
        }

        //System.out.println();
        if (isIntegerclass.isValidISBN(input) && length == 10) {
            System.out.println("True: ");

            // I WANT TO BE ABLE TO ACCESS THE ELEMENTS LIKE THIS. BUT IT HAS ONLY 1 ELEMENT FOR SOME STRANGE REASON.
            System.out.println(" " + intArray[0] + " - " + intArray[1] + " " + intArray[2] + " " + intArray[3] + " - " + intArray[4] + " " + intArray[5] + " " + intArray[6] + " " + intArray[7] + " " + intArray[8] + " - " + intArray[9]); //print
        } else {
            System.out.println("This is not the right input...");
            System.out.println("The number must be 10 letters(numbers only) long. No need for dashes in between.");
            System.out.println("[] - [][][] - [][][][][] - []");
        }
    }
}

【问题讨论】:

  • 这只是主要的,我有另一个类来检查输入是否只有整数。但是那个类有效。以防万一您想知道 if 语句中对它的引用。
  • 你在扫描仪输入中传递了什么?
  • 包含 10 个数字的字符串。像这样:1234567899
  • 您需要 1) 仅发布程序的相关部分 2) 发布程序无法正常工作的输入 3) 发布您不理解的确切输出/错误。
  • 比你的字符串没有任何空间,你怎么能期望更多的元素! :)

标签: java arrays input split


【解决方案1】:

我认为这会按照您想要的方式拆分输入。在“”上吐痰将每个数字视为一个单独的字符串。但是,这会在第一个数字之前产生额外的空字符串。 copyOfRange 删除了额外的内容。

import java.util.Arrays;

public class Test {
  public static final void main(String[] args) throws InterruptedException {
    String[] raw = "01234".split("");
    String[] strArray = Arrays.copyOfRange(raw, 1, raw.length);
    System.out.println(Arrays.toString(strArray));
  }
}

打印:

[0, 1, 2, 3, 4]

【讨论】:

  • 谢谢! :D 只需要更改 1 个空格 lmao。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-23
  • 2016-04-01
  • 2018-11-06
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 2013-05-02
相关资源
最近更新 更多