1

ボタンに文字列の最初の10文字を表示するコードがあります。しかし、文字列が10文字未満またはnullの場合、outofboiunds例外エラーが発生します。

単純な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

nullポインター例外が発生した場合は、ellipsedがnullである場合があります。

ellipsedがnullにならない場合でも、上記のコードには問題があります。ellipsed.length()<10の場合、「Touch to edit」に変更しますが、長さ> 10をチェックし、「Touchtoedit」.length ()> 10なので、短い文字列は常に「Touchtoe...」になります。

いずれにせよ、あなたが言いたいのは

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.length() < 1)
        ellipsed = "Touch to edit";
    else 
        ellipsed = ellipsed.substring(1, ellipsed.length()) + "...";
于 2012-11-28T20:42:32.493 に答える
0

基本的に、最初の10文字の部分文字列を取得しますが、長さが10未満の文字列の最初の10文字を取得しようとすると、なぜ例外が発生するのでしょうか。オラクルドキュメントから:

スロー:IndexOutOfBoundsException-beginIndexが負の場合、endIndexがこのStringオブジェクトの長さより大きい場合、またはbeginIndexがendIndexより大きい場合。

于 2012-11-28T20:42:49.243 に答える
0
if(ellipsed != null && ellipsed.length() >10)
    ellipsed = ellipsed.substring(0, 10) + "...";
else 
     ellipsed = "Touch to edit";
于 2012-11-28T20:56:38.963 に答える