所以我对编程总体上来说非常陌生,而且我只用了几个星期就开始了关于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();
}
}
感谢您的帮助!!
斯科特
答案 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()
指示你的手执行某项任务,就像你在这里调用一种方法来实现目的一样。 (我不知道我能在多大程度上明确这一点,但我希望在某种程度上这对你有帮助:))