if (hello == 50 || hello == 60 || hello == 70) {
これをそのようなものに短縮することは可能でしょうか?
if (hello == (50,60,70));
または、同じ変数を絶えず書き換える必要がないようにするために、これらの線に沿った何か。
if (hello == 50 || hello == 60 || hello == 70) {
これをそのようなものに短縮することは可能でしょうか?
if (hello == (50,60,70));
または、同じ変数を絶えず書き換える必要がないようにするために、これらの線に沿った何か。
考えられる方法の1つは、コレクションを使用することです。
Set<Integer> specialNumbers = new HashSet<Integer>();
specialNumbers.add(50);
specialNumbers.add(60);
specialNumbers.add(70);
if(specialNumbers.contains(hello)) {
//do stuff
}
ありえない。あなたはスイッチを書くことを好むことができます。
switch(hello)
{
case 50:
case 60:
case 70: // Do some thing
break;
}
どうですか
if ( 0 == ( ( ( hello / 10 ) - 5 ) / 3 ) )
別の解決策:
if (Arrays.asList (new Integer [] {50, 60, 70}).contains (hello))
System.out.println ("contains!");
配列宣言では、intではなくIntgerを使用する必要があります。多くの定型コードですが、成長するときに役立つ場合があります。
最初のコストのかかる方法は、パラメータをオブジェクト楕円として使用するメソッドです。
public static boolean contains (Object sample, Object... os) {
for (Object o: os)
if (o.equals (sample))
return true;
return false;
}
使用量が安い:
if (ArrayCheck.contains (hello, 50, 60, 70))
System.out.println ("contains!");
を使用するタイプセーフメソッドの方が優れていますが、使用するのにコストがかかります。最初に、タイプのArrayCheckのインスタンスを生成する必要があります。
public class ArrayCheck <T>
{
public boolean contains (T sample, T... ts) {
for (T t: ts)
if (t == sample)
return true;
return false;
}
// ...
ArrayCheck <Integer> ac = new ArrayCheck <Integer> ();
if (ac.contains (hello, 50, 60, 70))
ただし、同じタイプでその種類の呼び出しが複数ある場合は許容されます。
あまり節約しませんが、3 intを超える場合は、10または20としましょう...
if (Arrays.binarySearch (new int [] {50, 60, 70}, hello) >=0)
System.out.println ("contains!");
それを行うには複数の方法があります。
新しいメソッドを組み込むことができます
if(checkValue(hello, 50, 60, 70))
{
// something
}
private boolean checkValue(data, Integer a, Integer b, Integer c)
{
return (hello == a || hello == b || hello == c)
}
または、コレクションを作成することもできます
しかし、どこかでチェックをしなければならないことを本当に回避することはできません。
また、Javaは演算子のオーバーロードをサポートしていないため、C++ではこのようなものになります
if( hello == (50, 60, 70))
有効になりますが(オーバーロードした場合==)、Javaではありません