Мультиклассовая программа - PullRequest
2 голосов
/ 05 августа 2010

Привет! Я пытался создать калькулятор, который может добавлять умножение и деление на вычитание, чтобы испытать себя, но я застрял вокруг переключателя: (Я укажу на ошибки в сообщении переключателя, которые говорят: «Добавление метода и т. Д. (Строка []) в добавлении типа и т. Д. Не применима для аргументов (). "Я считаю, что проблема заключается в открытом пространстве других классов.

Сценарий:

public class ComputronCalc {
    public static void main(String args[]) {

        int mode;
        mode = 1;

        Addition ADD = new Addition();
        Subtraction SUB = new Subtraction();
        Multiplication MUL = new Multiplication();
        Division DIV = new Division();

        System.out.println("Hello welcome to the Computron fully functional calculator, coded by Samuel Cole, designed by Dwight Schrute.");

        switch(mode) {
        case 1:
            ADD.Addition();<-----------addition is underlined in red
            break;
        case 2:
            SUB.Subtraction();<-------------same
            break;
        case 3:
            MUL.Multiplication();<---------------same
            break;
        case 4:
            DIV.Division();<----------------same
            break;
        default:
            System.out.println("You have not selected a mode, do so by editing the mode variable in the source.");
        }
    System.out.println("Thank you for choosing Computron.");
    }
}
import java.util.Scanner;

public class Addition {
    public void Addition(String Args[]) {
        Scanner input = new Scanner(System.in);

        double fnum, snum, answer;
        System.out.println("Type the first number you desire to calculate.");
        fnum = input.nextDouble();
        System.out.println("Type the second number you desire to calculate.");
        snum = input.nextDouble();
        System.out.println("Calculating...");
        answer = fnum + snum;
        System.out.println(answer);

    }
}
import java.util.Scanner;

public class Multiplication {
    public void Multiplication(String Args[]) {
        Scanner input = new Scanner(System.in);

        double fnum, snum, answer;
        System.out.println("Type the first number you desire to calculate.");
        fnum = input.nextDouble();
        System.out.println("Type the second number you desire to calculate.");
        snum = input.nextDouble();
        System.out.println("Calculating...");
        answer = fnum * snum;
        System.out.println(answer);

    }
}
import java.util.Scanner;

public class Division {
    public void Division(String Args[]) {
        Scanner input = new Scanner(System.in);

        double fnum, snum, answer;
        System.out.println("Type the first number you desire to calculate.");
        fnum = input.nextDouble();
        System.out.println("Type the second number you desire to calculate.");
        snum = input.nextDouble();
        System.out.println("Calculating...");
        answer = fnum / snum;
        System.out.println(answer);

    }
}

примечание: я использую затмение, поэтому каждый класс находится на отдельной странице.

Ответы [ 3 ]

3 голосов
/ 05 августа 2010

Ваши методы ожидают аргумента "args", который вы не используете.Убери это.Например:

public void Addition(String Args[]) {

становится:

public void Addition() {

(кстати, ваш код не соответствует Oracle Java Naming Convention )

0 голосов
/ 05 октября 2016

Нет параметра (в этой программе параметр String [] args) для функции внутри четырех классов операторов. Ваша программа должна работать без них.

public class Addition { 
    public Addition() {
    //...
    }
}

То же самое относится и к другим классам.

public class Subtraction { 
    public Subtraction() {
    //...
    }
}

public class Multiplication{ 
    public Multiplication() {
    //...
    }
}

public class Division { 
    public Division() {
    //...
    }
}
0 голосов
/ 05 августа 2010

Хотя острая проблема заключается в том, что вам нужно изменить сигнатуры методов, чтобы они не имели каких-либо параметров, или изменить вызов метода для отправки параметра, я думаю, что есть лучшее решение, которое вам следует принять.

Изменитьметоды в ваших классах операций должны быть конструкторами:

public class Addition { 
    public Addition() {
    //...
    }
}

Тогда вам не нужно создавать экземпляры всех операций для каждого запуска, и переключатель становится:

switch(mode) {
case 1:
    Addition();
    break;
case 2:
    Subtraction();
    break;
case 3:
    Multiplication();
    break;
case 4:
    Division();
    break;
default:
    System.out.println("You have not selected a mode, do so by editing the mode variable in the source.");
}
...