2016-12-02 4 views
0

私はメインを使用してユーザーが望む数字の数を求め、ユーザーが入力するコードを書くことを試みています。その後、外部の方法では、配列からそれらの数値を取得し、両方とも60より大きい数値を見つける必要があります。その後、両方をメインに戻す必要があります。ここで私が持っているものです。外部メソッドで配列を塗りつぶしてメインに返す

public class arrayCounter 
{//begin class 
public static void main(String[]args) 
{//begin main method 
    java.util.Scanner input = new java.util.Scanner(System.in); 
    System.out.println(); 

    double greaterThan = 0; 
    double evenNumber = 0; 

    System.out.println("Please enter the number of intergers you want to put into the array."); 
    int numbers = input.nextInt(); 
    int[] arrayInt = new int[numbers]; 
    int i = 0; 

    for (i =0; i < arrayInt.length; i++){//begin for loop 
     System.out.println("Please enter in those numbers now."); 
     arrayInt[i] = input.nextInt(); 
     }//end for loop 

    System.out.println("There are " + greaterThan + " numbers that are greater than 60."); 
    System.out.println("The even numbers are " + evenNumber + " in the array."); 
}//end main 



public static double arrayCounter (double greaterThan, double evenNumber){//begins outside method 
    int i = 0; 
    int numbers = 0; 
    int[] arrayInt = new int[numbers]; 
    for (i = 0; i < arrayInt.length; i++){//begins for loop 
    if(arrayInt[i] <= 60){//begin if loop 
    greaterThan++; 
    return greaterThan; 
    }//end if loop 
    }//end for loop 

    if(arrayInt[i] % 2 == 0){//begin if loop 
    evenNumber++; 
    return evenNumber; 
    }//end if loop 
    return 0; 
}//end outside method 
}//end class 

私は両方のNetBeansとパテでそれをコンパイルすると、それがうまくコンパイルが、それは実際に私の答えで任意の番号を与えるものではありません、ちょうど0それは言うだろう: "60より大きい0.0の数値があります。 偶数は配列の0.0です。"

正しい番号を取得しないと間違っていますか?

+0

ここにはいくつかの問題があります。 – HouseCat

答えて

0

まず、arrayCounterで値を1つずつ返すので、このような両方の変数を取得することはできません。私は参照/ポインタを使ってC/C++のように動作すると思っているのだろうか?それはそのようには機能しません。

代わりに、変数をスコープの一部として再利用できるようにクラスに宣言します。

public class arrayCounter 
{//begin class 
double greaterThan = 0.0; 
double evenNumber = 0.0; 

次に、以下のように、クラス変数はarrayCounterメソッドで追加/増分する必要があります。

greaterThan++; evenNumber++;

今、あなたが値を返すようにしようとしていないこと、のは、return文、入力パラメータを取り除くみましょう、と下図のように無効にするために、二重の戻り値の型を変更します。

public static void arrayCounter() {

最後に、メインでは、あなたがあなたのSystem.outラインに到達する前に、実際にあなたの関数を呼び出す必要があります。
arrayCounter();

これらの変更が加えられても、ほとんどの場合、いくつかの改善やエラー処理が必要な場合があります。

関連する問題