Java 出现子字符串和边界外异常错误
我有一些代码来显示按钮上字符串的前十个字符。但是当字符串小于10个字符或为空时,我会得到out-of-Bouinds异常错误 我以为一个简单的IF语句可以解决这个问题,但它似乎没有。有人能指出我的问题吗?谢谢 我查阅了android开发者参考资料,但并没有说明解决这个问题的方法Java 出现子字符串和边界外异常错误,java,android,Java,Android,我有一些代码来显示按钮上字符串的前十个字符。但是当字符串小于10个字符或为空时,我会得到out-of-Bouinds异常错误 我以为一个简单的IF语句可以解决这个问题,但它似乎没有。有人能指出我的问题吗?谢谢 我查阅了android开发者参考资料,但并没有说明解决这个问题的方法 Button item1 = (Button) findViewById(R.id.buttontext1); String ellipsed = PrefConnector.readString(this, PrefC
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);
Button item1=(Button)findviewbyd(R.id.buttonext1);
String ellipsed=PrefConnector.readString(this,PrefConnector.ONE,null);
如果(ellipsed.length()<1)ellipsed=“触按可编辑”;
如果(ellipsed.length()>10)ellipsed=ellipsed.substring(0,10)+“…”;
第1项setText(省略号);
你为什么不试试
if(ellipsed.length() < 1)
ellipsed = "Touch to edit";
else
ellipsed = ellipsed.substring(1, ellipsed.length()) + "...";
if(省略号.length()<1)
ellipsed=“触按可编辑”;
其他的
ellipsed=ellipsed.substring(1,ellipsed.length())+“…”;
你为什么不试试
if(ellipsed.length() < 1)
ellipsed = "Touch to edit";
else
ellipsed = ellipsed.substring(1, ellipsed.length()) + "...";
if(省略号.length()<1)
ellipsed=“触按可编辑”;
其他的
ellipsed=ellipsed.substring(1,ellipsed.length())+“…”;
基本上,您获取前10个字符的子字符串,您想知道如果您试图获取长度小于10的字符串的前10个字符,为什么会出现异常?从oracle文档:抛出:IndexOutOfBoundsException-如果beginIndex为负值,或 endIndex大于此字符串对象的长度,或 beginIndex大于endIndex
基本上,您获取前10个字符的子字符串,您想知道如果您尝试获取长度小于10的字符串的前10个字符,为什么会出现异常?从oracle文档:
抛出:IndexOutOfBoundsException-如果beginIndex为负值,或 endIndex大于此字符串对象的长度,或 beginIndex大于endIndex
如果您得到一个空指针异常,那么必须存在ellipsed为空的情况 即使ellipsed从不为null,上面的代码也有一个问题:如果ellipsed.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)+"...";
如果您得到一个空指针异常,那么必须存在ellipsed为空的情况 即使ellipsed从不为null,上面的代码也有一个问题:如果ellipsed.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)+"...";
张贴日志,并确定日志在哪里被破坏。
ellipsed
non-null?发布日志并确定日志的中断位置。是否省略了
非空?这不起作用。当字符串为空时仍会出现null异常这不起作用。当字符串为空时仍然会出现null异常我知道,但我正在寻找一种方法来克服这个我知道,但我正在寻找一种方法来克服这个+1,正确答案。(我的每日投票数不足,因此我无法实际更新您的答案,抱歉)。这适用于空值,但如果字符串介于0和10之间,则不适用characters@Vulcan:哈哈,我怎么会这么瞎!!这对我来说很有用@user1195777字符串为0-10个字符时的规格有点模糊;如果满足条件,是否希望它保持不变?+1,回答正确。(我的每日投票数不足,因此我无法实际更新您的答案,抱歉)。这适用于空值,但如果字符串介于0和10之间,则不适用characters@Vulcan:哈哈,我怎么会这么瞎!!这对我来说很有用@user1195777字符串为0-10个字符时的规格有点模糊;如果满足条件,您希望它保持不变吗?谢谢!这似乎奏效了。您可能希望为将来通过谷歌搜索进入此页面的用户编辑您的答案。你还没有完成陈述(在需要的地方加上分号)!哎呀,谢谢你的修理。这就是当你的大脑被VB感染时会发生的事情。谢谢!这似乎奏效了。您可能希望为将来通过谷歌搜索进入此页面的用户编辑您的答案。你还没有完成陈述(在需要的地方加上分号)!哎呀,谢谢你的修理。这就是当你的大脑被VB感染时会发生的事情。