Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人能帮我用Java修改代码吗?_Java - Fatal编程技术网

有人能帮我用Java修改代码吗?

有人能帮我用Java修改代码吗?,java,Java,好的,让这更清楚这是我需要对我的整个计划做的。在向用户显示菜单之前,我需要main还原文件calc.bak中的任何计算器,并且在退出之前,main应保存同一文件中存在的所有计算器,并根据需要进行覆盖。我还需要给用户一个选项来创建一个全新的计算器,给它命名,并从一个已经存在的集合(我的加法、乘法和除法)中向它添加一个函数。我还需要用户通过设计和命名任何一对函数的组合来创建自己的函数。第一个函数的输出必然是第二个函数的输入。例如,用户可以创建一个名为addmult的新函数,该函数调用add函数,该函

好的,让这更清楚这是我需要对我的整个计划做的。在向用户显示菜单之前,我需要main还原文件calc.bak中的任何计算器,并且在退出之前,main应保存同一文件中存在的所有计算器,并根据需要进行覆盖。我还需要给用户一个选项来创建一个全新的计算器,给它命名,并从一个已经存在的集合(我的加法、乘法和除法)中向它添加一个函数。我还需要用户通过设计和命名任何一对函数的组合来创建自己的函数。第一个函数的输出必然是第二个函数的输入。例如,用户可以创建一个名为addmult的新函数,该函数调用add函数,该函数提示输入两个数字并进行相加,并将求和作为乘法函数的一个操作数,乘法函数必须提示输入第二个操作数

输出的样本应如下所示: 欢迎使用计算器配置器

从文件还原计算器

从头开始创建计算器

让我创建一个可以使用的计算器

二,

嗯。所以你想自己创造一个

你的计算器叫什么名字?弗雷德

指示您希望将我们的股票中的哪些功能添加到计算器中。输入0退出此菜单:

地址1

倍数2

分割3

一对函数4

输入2

指示您希望将我们的股票中的哪些功能添加到计算器中。输入0退出此菜单:

倍增

分开

一对函数

一, 指示您希望将我们的股票中的哪些功能添加到计算器中。输入0退出此菜单: 加

倍增

分开

一对函数

四,

请为此对提供一个名称:

博特哈德穆特

请提供此对的说明:

乘然后加

哪个函数应该是第一个

倍数0

地址1

0

哪个函数应该是第一个

倍增

一,

指示您希望将我们的股票中的哪些功能添加到计算器中。输入0退出此菜单:

倍增

分开

一对函数

四,

请为此对提供一个名称:

多尔塔夫特

提供此对的说明:在乘法和加法之后最后一次乘法

哪个函数应该是第一个

倍增

博特哈德穆特

二,

哪个函数应该是第一个

倍增

博特哈德穆特

指示您希望将我们的股票中的哪些功能添加到计算器中。输入0退出此菜单:

倍增

分开

一对函数

0

我是一个叫弗雷德的计算器

退出

清除内存

乘两个数

加两个数字

乘然后加

乘法和加法之后的最后一次乘法

有人能帮我达到这个目标吗

这是到目前为止我的代码

CalcConfig.java Calculator.java Add.java 如果可以的话,请帮忙。谢谢

伪代码:

// 1 maps to add, 2 to subtract, etc

while(cur_func = scanner.read != sentinal value) {
    switch(cur_func) { 
        1:
            //toss add into the functions set
            break
        .
        .
        .
    }
}

toArray your set and build the calc

如果您希望用户能够向计算器动态添加计算器函数,则需要以下内容:

public void addCalcFunction(CalcFunction newCalcFunction) {
    this.functions.add(newCalcFunction);
}
…但这需要将this.functions修改为集合

如果希望用户按名称引用这些函数,则需要映射它们:

private Map<String, CalcFunction> functions;

使用映射将需要您进行进一步的更改,但我相信您可以解决这些问题。

如何将Add添加到函数集中?“我应该把这个放在总管里吗?”比利:是的,这个放在总管里;看,他正在使用你已经创建的扫描仪来读取输入。你知道什么是扫描仪或主要功能吗?至于如何将add添加到函数集中,您需要像您的funs一样构建一个CalcFunction[],然后根据scanner循环选择的函数设置funs的每个值。例如,如果开关1:then funs[0]=new Addkbd,则添加两个数字;但是您不能使用0,您必须使用迭代器并担心数组的大小,或者使用ArrayList,然后在完成后将其复制到数组中。@Zaphod42谢谢您,先生,这真的很有帮助。对不起,我没有意识到代码没有缩进。我还有一个问题。如何让用户创建函数?例如,用户可以创建一个名为addmult的新函数,该函数调用add函数,该函数提示输入两个数字并进行相加,并将求和作为乘法函数的一个操作数,乘法函数必须提示输入第二个操作数。我将如何实现这一点?请提供具有逻辑和一致形式的缩进和定界代码块的代码。那代码乱七八糟!如果你能把问题的代码简化为一个简单的代码,你也会得到更好的帮助。这将涉及将所有类放入sa
me源文件,只有mainString[]声明为public.go和doIt的类是糟糕的函数名。另外,请修正你的缩进,这会使你的阅读更加困难。我不知道如何使用地图。AddCalcFunction方法会出现在其他类中还是我的类中?它会出现在您的计算器类中。这就是您想要添加计算器函数的地方。您可以在下面的位置查看如何使用地图
//just one of my functions(Add)
import java.util.Scanner;

// class to encapsulate adding two numbers
public class Add extends CalcFunction {
public Add(Scanner kbd, String description)
{
     super(kbd, description);
}

public double doit()
{
    double n1 = this.getNum("Enter a number: ");
    return this.doit(n1);
}

public double doit(double first)
{
    double n2 = this.getNum("Enter a second number: ");
    double answer = first + n2;
    return answer;
}
}
// 1 maps to add, 2 to subtract, etc

while(cur_func = scanner.read != sentinal value) {
    switch(cur_func) { 
        1:
            //toss add into the functions set
            break
        .
        .
        .
    }
}

toArray your set and build the calc
public void addCalcFunction(CalcFunction newCalcFunction) {
    this.functions.add(newCalcFunction);
}
private Map<String, CalcFunction> functions;
public void addCalcFunction(String functionName, CalcFunction newCalcFunction) {
    this.functions.put(functionName, newCalcFunction);
}