1

我有一些代码可以在按钮上显示字符串的前十个字符。但是当字符串少于 10 个字符或为空时,我得到了 out of 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

4 回答 4

1

如果你得到一个空指针异常,那么一定有省略号为空的情况。

即使 ellipsed 永远不会为空,您上面的代码也有问题:如果 ellipsed.length()<10,您将其更改为“Touch to edit”,但随后您检查 length>10 和“Touch to edit”.length ()>10,所以短字符串总是以“Touch to e...”结尾

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

if (ellipsed==null || ellipsed.length()==0)
  ellipsed="Touch to edit";
else if (ellipsed.length()>10)
  ellipsed=ellipsed.substring(0,10)+"...";
于 2012-11-28T21:04:40.140 回答
0
if(ellipsed != null && ellipsed.length() >10)
    ellipsed = ellipsed.substring(0, 10) + "...";
else 
     ellipsed = "Touch to edit";
于 2012-11-28T20:56:38.963 回答
0

你为什么不试试...

    if(ellipsed.length() < 1)
        ellipsed = "Touch to edit";
    else 
        ellipsed = ellipsed.substring(1, ellipsed.length()) + "...";
于 2012-11-28T20:42:32.493 回答
0

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

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

于 2012-11-28T20:42:49.243 回答