传递参数的麻烦

时间:2017-06-17 06:12:45

标签: java

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

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

  • Others.java有2个函数sum()manhrs(int x)
  • Parameters.java使用main()方法。

我想打印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);
    }
}
  

请参阅代码。

2 个答案:

答案 0 :(得分:1)

  

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

这是不可能的,因为manhrs()需要一个float类型的参数。如果没有任何参数,则无法调用此方法。

我建议你关掉电脑并拿一支铅笔和纸。首先,写下您要解决的问题的描述。然后编写解决问题所需的步骤。这些都应该是简单的英语(或者你最熟悉的任何自然语言)。用文字描述解决方案是一项关键技能,如果你想成为一名优秀的程序员,你需要学习。完成本练习后,您可以将简单描述翻译成Java。

其他想法和建议

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

答案 1 :(得分:0)

  

我的输出应该是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方法并实际得到总和

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在此连接中可能是静态的