当String包含“ - ”减号时,为什么parseInt(String)方法没有给出错误?

时间:2015-01-07 10:28:48

标签: java

所以我正在寻找一个练习的解决方案,并且发现它并没有给出错误并且实际上忽略了它。

代码:

初始化银行帐户对象(只需轻轻一按代码,因为这是必不可少的部分):

Account[] accounts = new Account[3];
try{

accounts[0] = new SavingAccount("035-0621094-44", 2.5);

银行帐号验证的一部分并将其拆分:

private void isNrOk (String nr) throws AccountException{

    if (nr.length()==14){
         int d1=Integer.parseInt(nr.substring(0,3));
         System.out.println(d1);

输出:35

所以我的问题是,当我尝试转换字符串' 035 - '时,为什么不给我错误?成一个整数。我想如果你试图转换小数以外的东西,它会给出错误。或者是因为它被视为减号并且在这种情况下只是忽略它,因为它在后面?

编辑:我不知道javadocs,应该看起来很好看。 谢谢你的帮助。

6 个答案:

答案 0 :(得分:4)

它没有解析035-而是035,因为它是从索引零处的字符到第三个值;因此035。

答案 1 :(得分:0)

那是因为:

scala> "035-0621094-44".substring(0, 3)
res4: String = 035

答案 2 :(得分:0)

您也可以使用以下代码。

String[] stringArr = nr.split("-");
int d1 = Integer.parseInt(stringArr[0]);

答案 3 :(得分:0)

<强>

public String substring(int beginIndex,
               int endIndex)

此方法返回一个新字符串,该字符串是此字符串的子字符串。子字符串从指定的beginIndex开始,并扩展到索引endIndex - 1处的字符。因此子字符串的长度为endIndex-beginIndex。 示例:

"hamburger".substring(4, 8) returns "urge"
 "smiles".substring(1, 5) returns "mile"

答案 4 :(得分:0)

这里的子串构造函数与begin index和end index一起使用。

但是当您在字符串上应用子字符串时,您需要考虑基于0的开始索引和基于1的结束索引。

您也可以根据&#39; - &#39;。

进行拆分

答案 5 :(得分:0)

这将是基本语法....

public String[] split(String regex, int limit)

例如:

String Str = new String("AccontNumber: 1234-2234-123");


  for (String s: Str.split("-", 2)){
     System.out.println(s);