2017-12-05 33 views
0

私は与えられた2つの数値の共通因子を見つける方法を作成しようとしていますが、コンパイルするファイルを取得できません。私の中括弧はすべて、このエラーの原因となるほとんどの場合、私はそれを認識しているので閉じています。うまくいけば誰かが私を助けることができます!Javeエラー:解析中にファイルの終わりに達しました(標準ではありません)

import java.util.Scanner; 
public class E1{ 
    public static void main (String [] args){ 
     Scanner kb = new Scanner(System.in); 
     double n1,n2; 

     System.out.println("Enter two numbers"); 
     n1=kb.nextDouble(); 
     n2=kb.nextDouble(); 

     printCommonFactors(n1,n2); 
    } 

//call a method that prints the positive shared factors of the 2 inputed numbers 

    public static void printCommonFactors(int n1,int n2){ 

    //determining the max/min of the two inputed variables 

     int max,min; 
     max=Math.max(n1,n2); 
     min=Math.min(n1,n2); 

    //setting up 2 arrays to store the factors 

     int [] maxFactors = new int [max]; 
     int [] minFactors = new int [min];  
     int counter1; 

     for (inti=0;i>max;i++) 
      if (i%max=0) 
        counter1++; 
        maxFactors[counter1]=i; 


     for (int i=0;i>min;i++) 
      if (maxFactors[i]%min=0) 
       maxFactors[i]= 

    } 
} 

これは私が受け取るエラーです:「解析中にファイルの終わりに達し、」あなたが見ている理由は、パーサーが右サイドを見つけるために期待していることである

enter image description here

+0

正確なエラーを受け取ってください –

+0

ダブルサイズの配列を作成することはできません – Edwardth

答えて

1

等価演算子のオペランドは実行できません。方法はmaxFactors[i]=で終了します。バイナリ演算子は常に右辺のオペランドを必要とします。この場合、等号の後に値を配置する必要があります。

また、Javaにいくつかの原則を適用しようとしているようですが、おそらく別の言語から引き出したようです。ここで最も明白なのは、明示的なブロックを空白で置き換えることです。これはPythonのような言語では機能しますが、Javaでは動作しません。インデントはJavaでは重要ではなく、可読性向上の効果しかありません。

これはforの文に関連しています。あなたが実際にブロックを使用していないので、これらの文は、実際に等価です。これは、その範囲の外に参照されてiで問題が発生します

for (inti=0;i>max;i++) 
    if (i%max=0) 
     counter1++; 
     maxFactors[counter1]=i; 

for (inti=0;i>max;i++) { 
    if (i%max=0) { 
     counter1++; 
    } 
} 
maxFactors[counter1]=i; 

。これに関するもう1つの問題は、forイニシャライザ(inti=0;)に空白がなく、int i = 0であることです。

他の問題は、それが今まで trueの場合i>minは必ず原因に真のままになります((タイプintでなければなりません)非整数のサイズと配列を割り当てようとあなたのfor -loopsに悪いテスト式を使用することを含む、あなたの整数のオーバーフローに達するまでのインクリメンタ)。

関連する問題