【问题标题】:Creating separate input and output modules创建单独的输入和输出模块
【发布时间】:2016-03-18 11:09:36
【问题描述】:

我正在制作一个程序,用户在其中输入直径、长度、宽度、底边、高度的值。这些值是通过一些面积计算得出的。面积被计算出来并以各种不同的单位返回给用户。制作完成后,我将它分成几个子模块(Java 中的方法)。

但是,当我将输入和输出模块分开时,它不会编译,因为变量是在输入法中初始化的。

如果我尝试在方法中定义变量(显然不起作用),因为我已经在输入法中定义并初始化了变量。

如何让我的输出方法使用用户在输入方法中初始化的变量。

这个想法的意思是我的主要是:

Main 
{
    inputInteger();
    inputReal();
    outputCRT(); //CRT = Circle Rectangle Triangle
}

我以为你在方法之间传递变量,例如:

outputCRT(int diameter, double length...etc)
{
  all my output
}

但是(我很确定)这意味着当我在 main 中调用它时,我必须给它赋值:

Main 
{
    outputCRT(8, 32.43...etc);
}

但这违背了用户在使用扫描仪时输入自己的值的全部目的。我该如何解决这个问题?

【问题讨论】:

    标签: java methods


    【解决方案1】:

    由于这是一个学校项目,你的老师很可能会给你更多的信息.​​.....

    您的老师似乎希望您在课堂上使用全局变量,然后让您使用它们。这样,inputInteger 函数会设置一组变量,然后inputReal 会设置另一个组,最后outputCRT 会输出结果。

    【讨论】:

    • 我会看看设置全局变量,不过还不太明白如何将变量传入和传出方法。此外,该项目首先像 main 中发生的一切一样开始,然后计算区域部分被制成单独的方法,然后 main 被拆分为 circleStuff、rectangleStuff 和 triangleStuff。它们每个都包含初始化变量(输入),然后将其传递给 calc 模块,然后读出结果(输出)。项目的下一部分是按照描述分散输入和输出,这有点困难。
    • 到目前为止,您似乎正在使用“过程定向”,这是 java 会做的事情,但这不是它的强项。 Java 使用“面向对象 (OO)”,因此,考虑“A Circle”,它有一个属性“diameter”和一个方法“getCircunference”,它返回一个数字......你正在学习部分语言,并且因此,必须了解您在做什么/为什么要这样做。当您分配int diameter 时,您将保留一个名称和一个内存区域。您现在可以更改该空间中的值,并读取该区域的状态......程序的整体需求保持不变。
    【解决方案2】:

    如果我明白了,您应该以某种方式在“输入模块”中收集输入(例如 inputInteger()),然后使用“输出模块”中的输入(例如 outputCRT(...))。

    您可以通过返回输入方法的结果并将它们用作输出方法的参数来实现此目的。示例:

    public static void main(String[] args) {
        int diameter = inputInteger();
        double length = inputReal();
        ...
        outputCRT(diameter, length, ...);
    }
    
    static int inputInteger() {
        int value = read input in some way;
        return value;
    }
    
    static double inputReal() {
        double value = read input in some way;
        return value;
    }
    

    【讨论】:

    • 我对你的回答感到困惑......为什么你让函数返回值,而不使用它们(为什么不使两个函数都无效)?另外,这是一个学校项目,从不给出答案,而是指出用户如何自己创建答案
    • @Bonatti 编辑了这个问题。当然这不是解决办法,只是他可以遵循的一种方式。
    • 该代码并没有太大帮助,因为它并不真正适用于我的程序设置方式。但是,将变量设置为等于一个方法对我来说是新的(如您的代码的 2 和 3 所示),也许可以使用它来使其工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 2010-12-17
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多