Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 出现子字符串和边界外异常错误_Java_Android - Fatal编程技术网

Java 出现子字符串和边界外异常错误

Java 出现子字符串和边界外异常错误,java,android,Java,Android,我有一些代码来显示按钮上字符串的前十个字符。但是当字符串小于10个字符或为空时,我会得到out-of-Bouinds异常错误 我以为一个简单的IF语句可以解决这个问题,但它似乎没有。有人能指出我的问题吗?谢谢 我查阅了android开发者参考资料,但并没有说明解决这个问题的方法 Button item1 = (Button) findViewById(R.id.buttontext1); String ellipsed = PrefConnector.readString(this, PrefC

我有一些代码来显示按钮上字符串的前十个字符。但是当字符串小于10个字符或为空时,我会得到out-of-Bouinds异常错误

我以为一个简单的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);
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感染时会发生的事情。