Java - 理解类,方法和参数

时间:2014-07-30 05:53:59

标签: java class methods parameters arguments

所以我对编程总体上来说非常陌生,而且我只用了几个星期就开始了关于Java的暑期课程,而且我对这个任务我们需要使用的简单java计算器感到非常困惑。三个班级。

我决定编写代码并获得"工作"在一个类中,然后尝试将其拆分为必要的多个类。但是,我在这方面遇到了麻烦。我想我更困惑然后我以为我是关于方法和参数如何工作的。我非常感谢任何帮助,解释他们如何在这个程序或类似的东西中工作,以便我能更清楚地理解它。

以下是我遇到困难时的一部分说明.... " Driver类是唯一具有hmain(String [] args)方法的类.Driver类应该调用Menu类中的方法来打印菜单,并且从该方法应该调用Actions类中的方法菜单中的相应功能。"

Menu类和方法调用正常工作,我计划基本上将其余部分添加到Action类中,但每次我弄乱它时,我都会让自己更加困惑。我不知道它是否有所作为,但我考虑将开关添加到Menu类,如果我这样做,我是否需要使它成为调用开关的方法?这会怎么样?

import java.util.Scanner;
import java.io.*;

public class Driver {

public static void main(String[] args) {

    String s1 = Menu.getInput("Enter a numeric value: ");
    String s2 = Menu.getInput("Enter a numeric value: ");
    String option = Menu.getInput("Enter: \n 1=Add \n 2=Subtract \n 3=Multiply \n 4=Divide");

class Action {  
    int optionInt = Integer.parseInt(option);
    double result = 0;

    switch (optionInt) {
    case 1:
        result = addValues(s1, s2);
        break;
    case 2:
        result = subtractValues(s1, s2);
        break;
    case 3:
        result = multiplyValues(s1, s2);
        break;  
    case 4:
        result = divideValues(s1, s2);
        break;  

    default:
        System.out.println("You entered an incorrect value");
    }

public static String(
    System.out.println("The answer is " + result);
}

private static double divideValues(String s1, String s2) {
    double d1 = Double.parseDouble(s1);
    double d2 = Double.parseDouble(s2);
    double result = d1 / d2;
    return result;
}

private static double multiplyValues(String s1, String s2) {
    double d1 = Double.parseDouble(s1);
    double d2 = Double.parseDouble(s2);
    double result = d1 + d2;
    return result;
}

private static double subtractValues(String s1, String s2) {
    double d1 = Double.parseDouble(s1);
    double d2 = Double.parseDouble(s2);
    double result = d1 - d2;
    return result;
}

private static double addValues(String s1, String s2) {
    double d1 = Double.parseDouble(s1);
    double d2 = Double.parseDouble(s2);
    double result = d1 + d2;
    return result;
  }
 }

}   

class Menu {    
    public static String getInput(String prompt) {
        String option;
        Scanner scan = new Scanner(System.in);
        System.out.println(prompt);
        return option = scan.nextLine();
    }
}

感谢您的帮助!!

斯科特

2 个答案:

答案 0 :(得分:0)

首先,我推荐一本好书,或者不这样做,查看Oracle的资源,例如this ...

Java是一种面向对象的语言。对象是类的INSTANCE。考虑类似于模块的类,这些类在逻辑上是分开的,理论上不仅应该在您创建它的环境中运行和逻辑,而且在其他场景中也是如此。

例如,您可能有一个名为Car Park的程序,它是驱动程序(包含main方法,Java程序的入口点)。然后,您有一个名为Car的类,以及一个名为Person的类。类应包含与该类相关的变量和方法。所以在Car类中,你可能有变量,例如color,noOfWheels,noOfSeats等。汽车类也可能包含做事情的方法'与班级相关联,例如updateColor()changeNoOfWheels()。

关于方法和参数,它非常简单。 当方法定义如下:

public void updateColor(Color newColor)
{
    color = newColor;
}

括号中传递的颜色称为formal参数。它定义了实际调用方法时所需的type。这可以是任何类型,具体取决于您的方法。添加两个整数的方法可以接受(int x, int y作为其参数。 此方法只是采用传递给它的颜色,并将其分配给汽车的颜色(在调用方法时更新颜色)。

从驱动程序类中,您必须从类中实例化对象。 所以,

Car myCar = new Car()

实例化后,您可以调用属于它的方法。

myCar.updateColor(red);

此处括号之间的颜色为actual parameter。这假定red是颜色的预定义变量,否则您可以调用new Color()并定义自己的变量。

答案 1 :(得分:0)

我认为这是你可能正在寻找的东西:

import java.util.Scanner;
import java.io.*;
public class Driver {
public static void main(String[] args) {
    // get the Menu instance & call the method to get the menu list 
    Menu m = new Menu();
    m.getMenu();
 }
}

注意:请注意,为了调用驻留在另一个类中的方法,首先需要获取该类的实例,然后在该实例上调用该方法。与上面的m.getMenu()

一样

在Menu类中,您需要编写以下逻辑:

class Menu {
public void getMenu() {
// take the user inputs and write your validation and proper conversion logic e.g   'int' or 'double' what ever you want
    Scanner s = new Scanner(System.in);
    System.out.println("Enter the first number :");
    double num1 = s.nextDouble();
    System.out.println("Enter the second number :");
    double num2 = s.nextDouble();
    System.out.println("Please select an operation :");
    System.out.println("1 - Add " + "\n" + "2 - Subtract" + "\n"
            + "3 - Multiply" + "\n" + "4 - Divide");

    int choice = s.nextInt();
    Double result;
    Action service = new Action();
    switch (choice) {
    // call the appropriate method based on user selection
    case 1:
        result = service.addValues(num1, num2);
        service.displayResult(result);
        break;
    case 2:
        result = service.subtractValues(num1, num2);
        service.displayResult(result);
        break;
    case 3:
        result = service.multiplyValues(num1, num2);
        service.displayResult(result);
        break;
    case 4:
        result = service.divideValues(num1, num2);
        service.displayResult(result);
        break;
    default:
        System.out.println("Your choice is invalid.");

    }

 }

}

NOte:在这里,除了获取用户输入并将这些输入作为参数传递给适当的方法之外,您什么都不做。 (再次注意,如何调用这些方法)。

在Action类中放置您的服务逻辑

class Action {
    public double addValues(double a, double b) {
    return a + b;
}

public double subtractValues(double a, double b) {
    return a - b;
}

public double multiplyValues(double a, double b) {
    return a * b;
}

public double divideValues(double a, double b) {
    return a / b;
}

public void displayResult(double result) {
    System.out.println("Result is :" + result);
}
}

注意:此处每种方法都有不同的用途。通过将用户输入作为参数传递来调用此类实例上的任何方法时,它只是用于其目的。

<强> P.S: 方法很像你的行为。简单地认为自己是一台机器。现在,当你口渴时,你喝水,对吧?所以这里是你的大脑,main()指示你的手执行某项任务,就像你在这里调用一种方法来实现目的一样。 (我不知道我能在多大程度上明确这一点,但我希望在某种程度上这对你有帮助:))