【问题标题】:What if the string in the Java split is not found如果找不到Java拆分中的字符串怎么办
【发布时间】:2012-07-31 00:19:28
【问题描述】:
    String incomingNumbers[ ] = writtenNumber.split("\\-");

该程序接受自然语言数字,例如三十二或五。
那么如果输入了 5,我的incomingNumbers 数组中会出现什么?

【问题讨论】:

  • 你尝试的时候发生了什么?
  • @donroby 它按照预期的方式将其分成三十、二和五。但是当我尝试使用这些来访问哈希图中的键时,我使用的异常告诉我它不能使用它们。我将使用下面的评论框向您展示一些代码。

标签: java string split


【解决方案1】:

你得到一个大小为 1 的数组来保存原始值:

Input       Output
-----       ------
thirty-two  {"thirty", "two"}
five        {"five"}

您可以在以下程序中看到这一点:

class Test {
    static void checkResult (String input) {
        String [] arr = input.split ("\\-");
        System.out.println ("Input   : '" + input + "'");
        System.out.println ("    Size: " + arr.length);
        for (int i = 0; i < arr.length; i++)
            System.out.println ("    Val : '" + arr[i] + "'");
        System.out.println();
    }

    public static void main(String[] args) {
        checkResult ("thirty-two");
        checkResult ("five");
    }
}

哪个输出:

Input   : 'thirty-two'
    Size: 2
    Val : 'thirty'
    Val : 'two'

Input   : 'five'
    Size: 1
    Val : 'five'

【讨论】:

  • 私有静态HashMap numberMap = new HashMap();静态{ numberMap.put(新字符串(“一”),新整数(1)); etc String incomingNumbers[ ] = number.split("\\-", 0); int multiplicand = 0;if (numberMap.containsKey(incomingNumbers[0])){multiplicand += (Integer)numberMap.get(incomingNumbers[0]); } else { 抛出新异常(); }
  • @don roby 实际上,带有“-”的那些像 32 的工作正常,但不是像 5、6 或 19 这样的单个。
  • 顺便问一下,有谁知道为什么我的问题被分配了-4?
  • @ArmandoMoncada 看来您已经写过您还没有尝试过。下次使用 Eclipse 和调试器查看数组内部
  • @cl-r 但有时您不想尝试并立即掌握诀窍
猜你喜欢
  • 2014-07-22
  • 2016-05-01
  • 2014-07-17
  • 2023-03-09
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
相关资源
最近更新 更多