2017-11-14 6 views
0

効率的なJavaコードの作成を手伝ってください。Java:stmtの場合は単一行の3進演算子

ロジックは次のとおりです。 ファイル内の最初の有効なレコードを読み取り、ファイル名を生成する必要があります。無効な/有効なレコードは、行の最初の2文字で識別されます。無効なレコードの最初の2文字は、ignoreTransという名前のArrayListに格納されます(引数として渡されます)。

2つのシナリオがあります: - シナリオ1:ファイル内のすべてのレコードが、この場合に有効であるignoreTransは シナリオ2空になります:ファイルがignoreTransが渡された引数から移入された無効なレコードを持っています。

は、私は三項演算子以下のように書きたかった:

FileName = ignoreTrans.isEmpty() ? getFileName(pos) : (if (!ignoreTrans.contains(line.substring(0,2))) getFieldName(pos)); 

この文はerroringされます。 ifと一緒にternaryを使用する方法を提案できますか?

は、

+3

別の三項演算子を使用するだけですか? – Dukeling

+1

"stmtなら1行の3進演算子" - > 1つの質問:なぜ 'if'を1行に入れるのですか? – Turing85

+2

三項演算子は、for文ではなく式で動作します。 – clemens

答えて

2

をありがとうちょうどあなたがあなたが巣三項演算子は、あまりにもすることができ、ネストされたif構造を持つことができるかのように

FileName = ignoreTrans.isEmpty() ? getFileName(pos) : !ignoreTrans.contains(line.substring(0,2))) ? getFieldName(pos) : ""; 

を試してみてください。

+1

コードのみの回答は、一般的には意地悪ではありません。あなたはあなたの答えにいくつかの説明を加えるべきです。 – Turing85

+0

@ Turing85、私はあなたに同意します。私は説明文を書くために私の答えを編集しました。 – VHS

+0

また、if文をネストすることができるように、三項演算子に三項演算子をネストすることができますが、三項演算子にif文をネストすることはできません。 – Sirmyself

関連する問題