2012-03-30 5 views
0

私は、2つの仮想線が遭遇する点を見つけるJavaでアプリケーションを作成するというミッションで8番目のグレーダーであり、2つの線の傾きとy切片が与えられています。今のところ立っているように、私は与えられたx値(x​​ = 0,1,2など)のy値を格納する2つの配列(長い値の両方)を持っています。今度は、最初の配列のy値が他の配列の対応するものと等しいかどうかを調べるために、各ブロック(それをコロンで囲んだもの)に対してaを作成する方法を理解する必要があります。これはどうすればいいですか?Javaの特定のコンテキストの各ブロックについて

+0

何これについてはトリッキーであることは、単一のエンティティを超える 'foreach'ループ反復するということですが、(同時に両方のアレイ)複数のエンティティを反復処理しようとしています。従来の 'for'ループでは、どのようにするのかは分かりますが、' foreach'ループではできません。 –

+0

ああ、下の答え(upvoteで)のように、そうですか? –

+0

はい、もしあなたが特に 'foreach'ループを求められたら、他の種類の解決法が必要になります。 –

答えて

1

2つの配列を使用しているので、for-eachループではなく、通常のループを使用してください。何かのように:

// assuming both arrays are of the same size 
for (int i = 0; i < firstArr.length; ++i) { 
    if (firstArr[i] == secondArr[i]) { 
     // match found 
    } 
} 
+0

良い点...私はあなたがここで何を意味するかを見て、ありがとう!私は可能なときにそれを受け入れるでしょう、より良い答えが生じない限り。 +1 –

+0

これはそれぞれのためのものではありません –

+0

@ D3mon-1stVFW彼は私の質問に答えました。 –

0

私は、アルゴリズムにコメントするつもりはないが、それはあなたのユースケースのために、各ブロックがぴったりではないためのように思えます。各ブロックが複数のコレクションに適していないという事実を別にすれば、配列のサイズが異なる可能性もあります。

あなたはこのループが何をしているか、次の

for(int i = 0;i < firstArr.length && i < secondArr.length;i++) { 
    //Your comparison logic here 
} 

のようなループを使用したほうが良いですが、それが唯一の2つの配列の小さい方の最後まで行くということです。

+0

よろしくお願いいたします。基本的にBinyamin Sharetの答えと同じですか? –

1

編集

あなたは、配列内のxとyの両方を持っている場合は、単にその部分が欠落して申し訳ありません

findIntersect: 
    for(Long x : xArray){ 
    for(Long y : yArray){ 
     if(x==y){ 
     System.out.println("They do intersect"); 
     break findIntersect; //leave loop 
     } 
    } 
    } 

を行うロングタイプ。

エンド編集

List<Long> xList; //Assuming it has 0, 1, 2, 3, 4, 5 

for(Long x : xList){ 
    Long y1 = giveMePointYBasedOnSlope1(x); 
    Long y2 = giveMePointYBasedOnSlope2(x); 

    if(y1 == y2){ 
    System.out.println("They do intersect"); 
    break; //leave loop 
    } 
} 

//Example slope1 : y = (x * 2) + 3 
public Long giveMePointYBasedOnSlope1(Long x){ 
    return (x*2) + 3; 
} 

//Example slope2 : y = (x * -.5) + 7  
public Long giveMePointYBasedOnSlope2(Long x){ 
    return (x * -0.5) + 7; 
} 
+0

混乱しています...しかし、大丈夫です。私は推測します。 –

+0

あなたはまともな数学を持っていると仮定して、理解するのが最も簡単だと思いました。勾配を使ってy点を作成します。あなたはx点の集合を持っているので、yを作成するだけで、それが同じ場合は交差します。 –

+0

私は、コードの書式(長い変数名など)の面でもっと混乱させることを意味しました。私は数学の部分を理解していますが、それはしばらく時間がかかりました。 +1 –

関連する問題