发出SubStrings和outofboundsexception错误

时间:2012-11-28 20:35:08

标签: java android

我有一些代码可以显示按钮上字符串的前十个字符。但是当字符串小于10个字符或为空时,我得到了boiunds异常错误。

我认为一个简单的IF声明会修复它,但它似乎没有。有人可以指出我的问题吗?感谢

我查看了Android开发人员的参考资料,并没有说明如何解决这个问题

Button item1 = (Button) findViewById(R.id.buttontext1);
String ellipsed = PrefConnector.readString(this, PrefConnector.ONE, null);

if(ellipsed.length() < 1) ellipsed = "Touch to edit";
if(ellipsed.length() > 10) ellipsed = ellipsed.substring(0, 10) + "...";

item1.setText(ellipsed);

4 个答案:

答案 0 :(得分:1)

如果您收到空指针异常,则必须存在省略号为空的情况。

即使省略号永远不为空,上面的代码也有问题:如果省略了ellsed.length()&lt; 10,则将其更改为“Touch to edit”,然后检查长度> 10,并“触摸到编辑“.length()&gt; 10,这样短的字符串总是会”触摸到...“

无论如何,我想你想说的是

if (ellipsed==null || ellipsed.length()==0)
  ellipsed="Touch to edit";
else if (ellipsed.length()>10)
  ellipsed=ellipsed.substring(0,10)+"...";

答案 1 :(得分:0)

你为什么不试试......

    if(ellipsed.length() < 1)
        ellipsed = "Touch to edit";
    else 
        ellipsed = ellipsed.substring(1, ellipsed.length()) + "...";

答案 2 :(得分:0)

基本上你取前10个字符的子字符串,你想知道如果你试图获得长度小于10的字符串的10个第一个字符,为什么会出现异常?来自oracle docs:

  

抛出:IndexOutOfBoundsException - 如果beginIndex为负数,或者   endIndex大于此String对象的长度,或   beginIndex大于endIndex。

答案 3 :(得分:0)

if(ellipsed != null && ellipsed.length() >10)
    ellipsed = ellipsed.substring(0, 10) + "...";
else 
     ellipsed = "Touch to edit";