2016-03-25 4 views
0

Ich habe einen Code, den ich möchte, dass drei Variablen Aufruf einer Methode, die Benutzereingabe liest und bestimmen, ob es eine ganze Zahl ist (wenn nicht den Benutzer erneut abfragen), dann die Eingabe zurück Die Variable. Ich erhalte den Fehler folgenden Compiler, wenn ich versuche zu kompilieren:Scanner kann nicht in einer Methode verwendet werden

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

Hier ist mein Code:

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(); 
    } 

} 
} 

Jede Hilfe könnten Sie würde geschätzt geben!

+0

Ihre Methode 'getInt' nimmt eine' int' Variable als sein Parameter. Sie können keine 'Scanner'-Instanz übergeben, an der ein' int' erwartet wird. Außerdem kompiliert dein Code nicht wie angegeben ... du definierst 'input' (ein Parameter vom Typ 'int' in die Funktion' getInt') innerhalb der Funktion 'getInt' vom Typ' Scanner'. –

Antwort

1

Ich empfehle Ihnen „verwenden Scanner akzeptieren nur gültig int als Eingang“ zu lesen https://stackoverflow.com/a/2913026/5980046

+0

Wie würde ich diese Antwort in meiner Methode verwenden? Ich denke, dass ich verstehe, wie man ganze Zahlen nur mit Scanner akzeptiert, aber ich weiß nicht, was falsch mit dem Aufruf der Methode selbst geht – klab102

+0

Sie einfach den Code in main, nur kompilieren und ausführen. Ich nehme an, Sie haben ein Java-Konsolenprogramm erstellt. –

0

Ihre Methode getInt(int input) eine ganze Zahl als Argument erwartet.

Aber in Ihre Codes, Sie sind ein Scanner-Objekt anstelle von int bereitstellt:

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

Dies ist, was Sie wahrscheinlich wollte:

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

Das gibt mir einen anderen Fehler, der in meiner Methode auftritt: Fehler: Kann HasNextInt() auf dem primitiven Typ Int nicht aufrufen. was ist in der Zeile: while (! Input.hasNextInt()) { – klab102

+0

@ klab102 Ich benutze 'nextInt()' in meinem Beispiel, nicht 'hasNextInt()'. – user3437460

+0

Ich machte diese Änderung in der Hauptmethode, der Fehler, den ich empfange, ist in der Methode getInt, die bestimmt, ob die Benutzereingabe eine ganze Zahl ist oder nicht. – klab102

Verwandte Themen