【问题标题】:how to i add an addition class to store the calculations?如何添加一个加法类来存储计算?
【发布时间】:2016-10-29 01:36:18
【问题描述】:

我接受了您给我的代码并对其进行了编辑,以便我可以添加另一个 java 类。但是现在答案总是 0.0 。我还需要创建一个while 循环,以便您可以进行多次计算,但我不知道将哪些条件应用于循环。

在用户输入数字的部分之前还需要有另一个循环,以便有人可以参考存储在数组中的过去答案。我只需要帮助制作循环,我可以为第一个循环制作 switch 语句。

package calculator;
import java.util.*;
public class calculator 

{

public static void main(String[] args) 
{
Operation operationObject = new Operation();
Scanner input = new Scanner(System.in);
int index = 0;

double calculations[] = new double[100];

System.out.println("Enter first number");
double num1 = input.nextDouble();
System.out.println("Enter second number");
double num2 = input.nextDouble();

System.out.println("Enter the operation"); 
System.out.println("Addition= + ");
System.out.println("Subtraction= - ");
System.out.println("Divion= / ");
System.out.println("Multiplcation= *");

String operation = input.next();

double result = 0;

switch (operation)  
{
case "+":
    operationObject.addition();
    System.out.println();
    break;
case "-":
    operationObject.subtraction();
    break;
case "/":
    operationObject.division();
    break;
case "*":
    operationObject.multiplication();
    break;
}

storeMem(calculations, result, index);

System.out.println("Your answer is: " + result);
}

static void storeMem(double[] memory, double data, int index)
{
if(index > memory.length)
    index = 0;

memory[index] = data;
index++;
}
}


//other class that contains the operations 


package calculator;

public class Operation{

double num1, num2,  answer;

public void addition(){
    answer = num1 + num2;
    System.out.println(answer);
}

public void subtraction(){
    answer = num1 - num2;
    System.out.println(answer);
}

public void division(){
    answer = num1 / num2;
    System.out.println(answer);
}

public void multiplication(){
    answer = num1 * num2;
    System.out.println(answer);
}
}

【问题讨论】:

  • 你不知道如何实现另一个类是什么意思?当然,您可以使用资源来帮助您学习如何做到这一点。目前尚不清楚为什么/什么你需要存储在另一个不能在数组中的类中
  • 至于学习如何创建其他类,请尝试从这里开始docs.oracle.com/javase/tutorial/java/javaOO
  • @cricket_007 由于小项目的需要,我需要为这个程序开设另一个课程。我的意思是我不知道如何实现是我不知道我的程序的哪一部分可以放在另一个类中,或者我是否可以在代码中添加一些东西来拥有另一个类。
  • 您总是可以添加代码来编写另一个类,但是如果您甚至没有学会如何使用 main 方法创建多个类,那么这样做对您来说似乎是一个奇怪的要求.
  • 我已经学会了如何使用 main 方法创建另一个类,抱歉我没有说清楚。我不知道如何添加到代码中以使用另一个具有主要方法的类@cricket_007

标签: java arrays switch-statement calculator


【解决方案1】:

是的,所以您的代码有点到处都是,我在如何执行您所要求的操作的示例中使其更加简洁。我将首先说你不需要另一个类,这比这容易得多,但是,你可以完全将我在示例中制作的方法实现到一个类中,并根据需要以这种方式使用它(还有其他方法这样做)。

这是我修改后的代码示例:

//unused import java.io.*;
import java.util.*;

public class Calculator 
{
public static void main(String[] args) 
{
    Scanner input = new Scanner(System.in);
    int index = 0;

    double calculations[] = new double[100];

    System.out.println("Enter first number");
    double num1 = input.nextDouble();
    System.out.println("Enter second number");
    double num2 = input.nextDouble();

    System.out.println("Enter the operation"); 
    System.out.println("Addition= + ");
    System.out.println("Subtraction= - ");
    System.out.println("Divion= / ");
    System.out.println("Multiplcation= *");

    String operation = input.next();

    double result = 0;

    switch (operation)  
    {
    case "+":
        result = num1 + num2;
        break;

    case "-":   
        result = num1 - num2;
        break;

    case "/":
        result = num1 / num2;
        break;

    case "*":
        result = num1 * num2;
        break;
    }

    storeMem(calculations, result, index);

    System.out.println("Your answer is: " + result);
}

static void storeMem(double[] memory, double data, int index)
{
    if(index > memory.length)
        index = 0;

    memory[index] = data;
    index++;
}
}

所以你真的想存储过去的计算,所以你需要做的就是将当前计算的结果添加到你的数组中。我通过为您创建一个名为 storeMem 的方法来简化此操作。该方法需要一个数组作为存储,要添加的数据和一个索引(索引是数组中的位置,例如 0、1 或 400;我稍后会解释)。因此,您首先调用 storeMem 方法,该方法将检查索引是否超出数组的范围(如果超出,则将其重置为覆盖内存)然后设置当前数据等于数组中的当前索引,以便它存储您的值。最后,该方法增加索引。这很有帮助,因此您可以使用您在程序中创建的 int index 轻松访问当前或以前的索引。因为 index 将只是您当前存储的值,而 index - 1 将是您之前的索引值(之前存储的结果)。

【讨论】:

  • 我用你给我的代码改变了原来的帖子,我编辑它有另一个 java 类。请返回我的原始帖子以获取有关我的问题和代码的更新
猜你喜欢
  • 1970-01-01
  • 2020-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-15
  • 1970-01-01
  • 2020-01-12
相关资源
最近更新 更多