【问题标题】:Trouble with passing arguments传递参数有问题
【发布时间】:2017-06-17 06:12:45
【问题描述】:

我已重新编写代码以仅包含我需要知道的内容。代码编译成功。

我有 2 个课程:Others.javaParameters.java

  • Others.java 有两个函数 sum()manhrs(int x)
  • Parameters.javamain() 方法。

我想打印int x 的值而不是int y。我已经给出了下面的代码:

Parameters.java

package parameters;

public class Parameters {

    public static void main(String[] args) {
        int y = 50;
        Others o = new Others();
        //o.manhrs(x); 
        o.manhrs(y); // my output shoud be 100 (form the sum() class), but when I do not know how to do it.
    }
}

Others.java

package parameters;

public class Others {

    public void sum() {
        int x = 100; 
        manhrs(x);
    }

    public void manhrs(int x) {
        System.out.print(x);
    }
}

也请参考代码。

【问题讨论】:

  • 请显示您目前拥有的代码。不要只是解释它。显示它。
  • 请在此处添加代码示例并明确问题。
  • 提示:如果一个方法需要一个值,并且它不能作为参数传递,那么方法可能会从一个字段中获取值。您已经了解了字段,也就是实例变量,对吧?
  • 我建议您阅读 Java 书籍或在线教程。
  • 我无法理解explonation,只能理解代码。请提供代码。

标签: java


【解决方案1】:

现在我需要从 main() 调用方法 manhrs (float x),但我不想在这里传递任何参数。我只是想调用方法

这是不可能的,因为manhrs() 需要浮点类型的参数。你不能在没有任何参数的情况下调用这个方法。

我建议您关闭计算机并准备一支铅笔和一张纸。首先,写下你要解决的问题的描述。然后写出解决问题所需的步骤。这两种语言都应该使用简单的英语(或任何您最熟悉的自然语言)。如果您想成为一名优秀的程序员,用文字描述解决方案是您需要学习的一项关键技能。完成此练习后,您就可以将简单的描述翻译成 Java。

其他想法和建议

到目前为止,您的代码设计似乎存在几个问题。每种方法都试图完成多项任务。例如,manhrs() 执行 SQL 查询打印一个数字。相反,您需要清楚地定义每种方法来准确地做一件事并做好。你真的需要两种不同的方法。您想以两种不同的方式调用同一个方法这一事实进一步强调了您需要两个方法。

【讨论】:

  • 我做到了,现在我已经清楚地定义了我的问题。请问你能过吗?
  • @XSufferingBro 您的问题仍然没有描述您要解决的问题。这个计划的目的是什么?
【解决方案2】:

我的输出应该是 100(形成 sum() 类),

为什么会这样?您显然将 50 作为值传递,该值将被打印出来。

首先,sum () 是一个方法。其次,如果你调用它而不是o.manhrs(y),它会输出100

最初发布

现在我需要从 main() 调用方法 manhrs(float x),但我不想在这里传递任何参数

这没有意义

你不想传递参数?然后去掉参数

public void manhrs()

除了打印 x 之外什么都不做...不太清楚 Recipe_Name 的来源,但我强烈建议你有机会时阅读 SQL 注入


如果我理解正确,您希望返回 SQL 结果。

像这样的

public float sum(String q) {

    Calculation c = new Calculation();
    float sum = 0;
    try {
        PreparedStatement pst = mycon.prepareStatement(q);
        ResultSet rs = pst.executeQuery();
        sum = rs.getFloat(1);
   } catch (SQLException e) {

    } 
    return sum;
} 

然后调用 sum 方法,实际得到 sum

private String Recipe_Name = "Some name" ;

public void manhrs() {
    DataHandler d = new DataHandler();

    // Beware SQL Injection!! 
    String q ="SELECT SUM(`Man HR`) FROM `process` GROUP BY `Recipe Name`= '"+Recipe_Name+"'";

    // You should really pass the recipe name as the parameter, not the whole query 
    float x = d.sum(q);
    System.out.println(x);
}

注意,manhrs 在此连接中可能是静态的

【讨论】:

  • 我已重新编写代码以仅包含我需要的内容。你能过一遍吗?
  • 我不确定你现在在期待什么......你根本没有打电话给sum()
  • 您能告诉我如何通过 main() 方法打印 Others() 类中的 int x 的值吗?
  • 我已经告诉过你了。 o.sum()...x 变量只是该方法的本地变量,不是类的一部分
  • 我认为您对参数名称毫无意义感到困惑。 manhrs(int x) 是完全不同的 xint x = 100
猜你喜欢
  • 1970-01-01
  • 2017-12-05
  • 2015-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多