Java错误:类中的方法不能应用于给定的类型

时间:2015-02-11 03:02:05

标签: java

我只是试图在每个开关发生时将方法调用到main,但是我每次尝试调用任何方法时都会收到错误消息,而不是尝试返回任何内容。恩。如果用户输入a或A我想将add方法调用为main

public static void main(String[] args) 
{ 
    char character; 

    Scanner keyboard = new Scanner(System.in); 

    while (character != 'E' || character != 'e') 
    {

    System.out.println(" A:Addition \n S:Subtraction \n M:Multiplication \n D:Division \n R:Modulus \n E:exit");
    switch (character)
    {
        case 'a':
        case 'A':
            System.out.println("your choice A");
            add(); 
            break; 

        case 's':
        case 'S':
            System.out.println("your choice S");
            subtraction();
            break; 

        case 'm':
        case 'M':
             System.out.println("your choice M");
             multiplication();
             break; 

        case 'd':
        case 'D':
             System.out.print("your choice D");
             division();
             break;

        case 'r':
        case 'R':
             System.out.println("your choice R");
             modulus();
             break;

        default: 
             System.out.println("Error: please enter a valid letter");
             break;

    } 
   }
 } 
public static void add(Scanner keyboard) 
{
    int a,b; 
    //get integer 1
    System.out.println("enter integer 1");
    a = keyboard.nextInt (); 

    //get integer 2
    System.out.println("enter integer 2"); 
    b = keyboard.nextInt();

     int total = a + b; 
    System.out.println(a + "plus" + b + "is" + total );
}
public static void subtraction(Scanner keyboard) 
{
    int a,b;

    //get integer 1
    System.out.println("enter integer 1");
    a = keyboard.nextInt (); 

    //get integer 2
    System.out.println("enter integer 2"); 
    b = keyboard.nextInt();
     int total = a-b;
    System.out.println(a + "minus" + b + "is " + total);
}
public static void multiplication(Scanner keyboard) 
{
    int a,b; 
    //get integer 1
    System.out.println("enter integer 1");
    a = keyboard.nextInt (); 

    //get integer 2
    System.out.println("enter integer 2"); 
    b = keyboard.nextInt();

    int total = a*b; 
    System.out.println(a + "times" + b + "is " + total);
}
public static void division(Scanner keyboard) 
{
    int a,b;

    //get integer 1
    System.out.println("enter integer 1");
    a = keyboard.nextInt (); 

    //get integer 2
    System.out.println("enter integer 2"); 
    b = keyboard.nextInt();
    int total = a/b;
    System.out.println(a + "divided" + b + "is " + total);
}
public static void modulus(Scanner keyboard) 
{
    int a,b;

    //get integer 1
    System.out.println("enter integer 1");
    a = keyboard.nextInt (); 

    //get integer 2
    System.out.println("enter integer 2"); 
    b = keyboard.nextInt();
    int total= a%b; 
    System.out.println(a + "modulus" + b + "is " + total);

    System.out.println("The program is terminating");
 }

}

4 个答案:

答案 0 :(得分:1)

你正在调用方法,但你没有包含参数

看看这个。

public static void add(Scanner keyboard) 

你有一个参数,所以你在调用这个方法时必须包含一个参数

所以

你必须像这样调用这个方法。

add(keyboard);

答案 1 :(得分:0)

您已经定义了将Scanner作为参数的方法,但是您正在调用没有args的方法。

答案 2 :(得分:0)

您正在使用的所有方法都应该在没有参数的情况下接收Scanner个对象。

例如,当签名为

时,请致电add();
public static void add(Scanner keyboard)

这就是您收到错误的原因。

相反,使用add(keyboard)并对减法,乘法,除法和模数方法重复相同的操作。

这样您的switch现在看起来像

switch (character) {
    case 'a':
    case 'A':
        System.out.println("your choice A");
        add(keyboard);
        break;

    case 's':
    case 'S':
        System.out.println("your choice S");
        subtraction(keyboard);
        break;

    case 'm':
    case 'M':
        System.out.println("your choice M");
        multiplication(keyboard);
        break;

    case 'd':
    case 'D':
        System.out.print("your choice D");
        division(keyboard);
        break;

    case 'r':
    case 'R':
        System.out.println("your choice R");
        modulus(keyboard);
        break;

    default:
        System.out.println("Error: please enter a valid letter");
        break;

}

答案 3 :(得分:0)

您缺少方法调用中的参数。

 case 'a':
    case 'A':
        System.out.println("your choice A");
        add(keyboard); // Add arguments.
        break;