2016-03-25 3 views
0

У меня есть код, который я хотел бы иметь, чтобы три переменные вызывали метод, который читает ввод пользователя и определяет, является ли он целым (если не reprompt пользователь), а затем возвращает переменная. Я получаю следующее сообщение об ошибке компилятора при попытке компиляции:Невозможно использовать сканер в методе

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' переменную как его параметр. Вы не можете передать экземпляр «Scanner», где ожидается «int». Кроме того, ваш код не компилируется, как указано ... вы переопределяете 'input' (параметр типа' int' на функцию 'getInt') внутри функции' getInt' типа 'Scanner'. –

ответ

1

Я рекомендую вам прочитать «использовать сканер, чтобы принять только действительный Int в качестве входных данных» https://stackoverflow.com/a/2913026/5980046

+0

как бы использовать этот ответ в моем методе? Я действительно думаю, что понимаю, как принимать целые числа только со сканером, но я не знаю, что происходит с вызовом самого метода. – klab102

+0

Вы просто поместили код в основную часть, просто компилируете и запускаете. Я предполагаю, что вы создали консольную программу Java. –

0

Вашего метода getInt(int input) ожидает целое число в качестве аргумента.

Но в ваших кодов, вы обеспечиваете объект Scanner вместо междунар:

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

Это то, что вы, вероятно, хотели:

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

Это дает мне еще одну ошибку, которая возникает в моем методе: Ошибка: Невозможно вызвать hasNextInt() для примитивного типа int. , который находится в строке: while (! Input.hasNextInt()) { – klab102

+0

@ klab102 Я использую 'nextInt()' в моем примере, а не 'hasNextInt()'. – user3437460

+0

Я сделал это изменение в основном методе, ошибка, которую я получаю, находится в методе getInt, который определяет, является ли пользовательский ввод целым или нет. – klab102