2017-05-24 5 views
0

次の条件を満たす場合は、peratorまたはperaterの2つの条件が含まれます。だから次のコードで私はこのエラーが発生している java.lang.NumberFormatException: For input string: "" 私はJavaで最初の条件が有効でない場合、if文の2番目の条件をチェックしました。ifまたはstatの2番目の条件は、または演算子

compressDurationが空またはnullまたは空白にすることができたりcompressDuration以下の場合は100

のような文字列vlaueが空でも、それはまた、第二の条件Integer.parseInt(compressDuration.trim())空白では確認されてはなりませんか?

ケースを変換するためのif文を書くにはどうすればよいですか?empty or null or blank or a String vlaue like 100.

String compressDuration = ""; 
    if(StringUtils.isBlank(compressDuration) || Integer.parseInt(compressDuration.trim())){ 
    System.out.println("The compressDuration has no value or a "); 

    }else{ 

    } 
+2

試してみましたか? – f1sh

+3

投稿したコードはコンパイルに合格しません。バイナリORのオペランドに 'int'を渡すことはできません。おそらくあなたはコンパイルをパスし、あなたが言及した例外をスローするコードの以前のバージョンを実行しています。 – Eran

答えて

1

最初の条件が有効でない場合なステートメントがチェックされている場合、私はJavaで第二の条件を考えました。

は、最初の条件がfalseの場合、ではないと判断されます。それは正しいです、それはそうではありません。だから明らかに、StringUtils.isBlank""のためにfalseを返していませんの場合何があなたのしていることの有効な例です。

私は疑問に思っていますが、空白文字列には""ではありません。 Integer.parseIntに渡すときはtrimを使用していますが、StringUtils.isBlankに渡すときはではなくになります。

Eran pointed outとして、コードはコンパイルされません。 int||演算子では使用できませんが、コードにはboolean || intという条件があります。これは、このコードが実際に持っているものを正確に表していないという考えに重みを与えます。

しかし、それは問題の1つではなくtrimだと思われます。おそらく、

String compressDuration = /*...get it from wherever...*/; 
compressDuration = compressDuration.trim(); 
int duration; 
if (StringUtils.isBlank(compressDuration) || (duration = Integer.parseInt(compressDuration.trim())) < 0) { 
    System.out.println("The compressDuration has no value or a value less than zero"); 
} else { 
    System.out.println("The compressDuration is " + duration); 
} 

か、if条件での副作用を好きではない(とそれを好きではないのは良い理由があるが、私は非常に単純な例のためにいくつかの例外を作る)の場合:

String compressDuration = /*...get it from wherever...*/; 
compressDuration = compressDuration.trim(); 
int duration = StringUtils.isBlank(compressDuration) ? -1 : Integer.parseInt(compressDuration.trim(); 
if (duration < 0) { 
    System.out.println("The compressDuration has no value or a value less than zero"); 
} else { 
    System.out.println("The compressDuration is " + duration); 
} 
+0

はい、あなたは正しくチェックされていません!その場合のためにstatmentがあれば、そのチェックを行う方法はありますか?私はgroovyのスクリプトでコードを鳴らしています。 – tree

0

try isInt有効な整数であれば真を返すメソッドを試してください。

if(!isInt(compressDuration.trim())) { 
    System.out.println("The compressDuration has no value or a "); 
} else{ 

} 

public boolean isInt(String str) { 

    try{ 
    int num = Integer.parseInt(str); 
    // is an integer! 
} catch (NumberFormatException e) { 
    // not an integer! 
    return false; 
} 
    return true; 
} 
+0

* "@木、この回答を見てください" *質問を投稿した人は、投稿されたすべての回答が通知されますので、@ pingする必要はありません。 –

関連する問題