如何从Java Scanner获取Integer输入

时间:2015-09-01 19:19:25

标签: java function input

我在java中有这个代码,代码运行良好

public class MaximumTest {
   // determines the largest of three Comparable objects
   public static <T extends Comparable<T>> T maximum(T x, T y, T z)
   {                      
      T max = x; // assume x is initially the largest       
      if ( y.compareTo( max ) > 0 ){
         max = y; // y is the largest so far
      }
      if ( z.compareTo( max ) > 0 ){
         max = z; // z is the largest now                 
      }
      return max; // returns the largest object   
   }
   public static void main( String args[] )
   {
      System.out.printf(maximum( 3, 4, 5 ) );
   }
}

但知道我想从用户那里得到输入而不是最大值(3,4,5)所以我确实喜欢这样:

import java.util.Scanner;
 public class MammalInt {

     public static <T extends Comparable<T>> T maximum (T x, T y, T z){
     T max=x;
     if(y.compareTo(max)>0){
    max= y;
     }
     if (z.compareTo(max)>0){
         max=z;
     } return max;
     }
    public static void main(String[] args) {

        Scanner x=new Scanner(System.in);
        Scanner y=new Scanner(System.in);
        Scanner z=new Scanner(System.in);

        System.out.println(maximum(x,y,z));

    }
    }

遗憾的是代码不起作用,行中存在问题:System.out.println(maximum(x,y,z));

eclipse说:绑定不匹配:MammalInt类型的泛型方法maximum(T,T,T)不适用于参数(Scanner,Scanner,Scanner)。推断类型Scanner不是有界参数的有效替代  &GT;

你有解决这个问题的方法吗?

感谢

3 个答案:

答案 0 :(得分:4)

Scanner对象不是输入。 Scanner为您提供了一个方法nextInt()来请求用户输入。

这是您的主要方法的外观:

public static void main(String[] args) {

    Scanner sc =new Scanner(System.in);
    int x = sc.nextInt();
    int y = sc.nextInt();
    int z = sc.nextInt();

    System.out.println(maximum(x,y,z));

}

答案 1 :(得分:1)

执行:

Scanner sc = new Scanner(System.in);

System.out.println(maximum(sc.nextInt(), sc.nextInt(), sc.nextInt()));

这样,该方法使用输入值而不是Scanner本身运行。

答案 2 :(得分:0)

考虑到您没有发布任何错误消息,只发布了代码。我会尝试这样可以纠正你的错误。 也许你可以试试这个:

public static void main(String[] args) {

        Scanner s=new Scanner(System.in);
         int x = s.nextInt();
         int y = s.nextInt();
         int z = s.nextInt();
        System.out.println(maximum(x,y,z));

    }