2016-03-25 3 views
0

私は3つの変数にユーザー入力を読み込み、それが整数であるかどうかを判断するメソッドを呼び出したいと思っています。変数。私がコンパイルしようとすると、私は次のコンパイラエラーが表示されます。ここではメソッドでスキャナを使用できません

Error: The method getInt(int) in the type Methods is not applicable for the arguments (java.util.Scanner)

は私のコードです:

import java.util.Scanner; 

public class Methods{ 
    public static void main(String [] arg){ 

Scanner scan=new Scanner(System.in); 

int a,b,c; 

System.out.println("Enter three ints"); 

a = getInt(scan.nextInt()); 
b = getInt(scan.nextInt()); 
c = getInt(scan.nextInt()); 

    } 



    public static int getInt(String input){ 
    Scanner scan=new Scanner(System.in); 

    int num = 0; 
    while (num <1) { 
    if(scan.hasNextInt()) { 
    int number = scan.nextInt(); 
    num +=1; 
    } 
    else{ 
     System.out.println("Invalid input. Please enter an integer value."); 
     input.next(); 
    } 

} 
} 

あなたが与えることができる任意の助けをいただければ幸いです!

+0

あなたの方法 'getInt'は' int'変数を取りますそのパラメータとして。 'int'が期待される場所に' Scanner'インスタンスを渡すことはできません。また、あなたのコードは与えられたようにコンパイルされません...関数 'getInt'の内部で、' input'(関数 'getInt'に' int'型のパラメータ)を 'Scanner'型に再定義しています。 –

答えて

1
私はあなたが「入力としてのみ有効なint型を受け入れるようにスキャナを使う」をお読みすることをお勧めします

https://stackoverflow.com/a/2913026/5980046

+0

どうすれば私の方法でこの答えを使用できますか?私はスキャナでのみ整数を受け入れる方法を理解していると思いますが、メソッド自体を呼び出すことで何が問題になるのかわかりません。 – klab102

+0

コードをmainに入れてコンパイルして実行してください。私はあなたがJavaコンソールプログラムを作成したと仮定します。 –

0

あなたの方法getInt(int input)は、引数として整数を期待しています。

しかし、あなたのコードでは、あなたの代わりにint型のスキャナオブジェクトを提供しています

a = getInt(scan); 
b = getInt(scan); 
c = getInt(scan); 

これはおそらく望んでいたものです:

a = getInt(scan.nextInt()); 
b = getInt(scan.nextInt()); 
c = getInt(scan.nextInt()); 
+0

これは私のメソッドで発生する別のエラーを返します: エラー:プリミティブ型intでhasNextInt()を呼び出すことができません。 私の例では 'hasNextInt()'ではなく 'nextInt()'を使っています: while(!input.hasNextInt()){ – klab102

+0

@ klab102 – user3437460

+0

私はメインメソッドでその変更を行いました。私が受け取っているエラーは、ユーザー入力が整数かどうかを判断するgetIntメソッドにあります。 – klab102

関連する問題