我有一些代码可以显示按钮上字符串的前十个字符。但是当字符串小于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);
答案 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";