用不同的Java方法访问变量

时间:2013-10-07 10:02:01

标签: java methods

我正在研究方法并且已经做了一个练习。我对这个特定问题的处理方式有点不确定。

我们提出的问题是:

    Modify the above program so the conversion is done in a method.

这是我到目前为止的代码,我的问题是当我运行代码时,直到我输入字母并且它停止。

   //Exercise 3 Brian Sheet 5

//修改上述程序,以便在方法

中完成转换
import java.util.Scanner;

public class Exercise3 {

public static void main(String[] args) {
    double temp;
    String c = "c";
    String f = "f";
    String a;
    Scanner input = new Scanner(System.in);

    System.out.println("Please enter the temperature: ");
    temp = input.nextDouble();

    input = new Scanner(System.in);

    System.out
            .println("Please enter whether you wish to convert to Celsius or Fahrenheit(c or f)");
    a = input.nextLine();
    if (a.equals(c)) {
        celsiusEq(temp);
    } else {
        Fahren(temp);
    }

}

private static double celsiusEq(double celsius) {
    double temp;
    celsius = (temp - 32) * 5 / 9;
    return celsius;

}

private static double Fahren(double fahrenheit) {
    double temp;
    fahrenheit = temp * 9 / 5 + 32;
    return fahrenheit;
}

} 我不知道自己做错了什么,这可能很简单。如果有人能帮助我的话,我会很感激,因为我在过去的30分钟里一直在看这个!

9 个答案:

答案 0 :(得分:2)

在这里你需要交换临时和摄氏变量才能正常工作

private static double celsiusEq(double celsius) {
        double temp; //here is the problem
        celsius = (temp - 32) * 5 / 9;
        return celsius;

    }

在这里你需要交换temp和fahrenheit varables才能正常工作

 private static double Fahren(double fahrenheit) {
        double temp; //here is the problem
        fahrenheit = temp * 9 / 5 + 32;
        return fahrenheit;
    }

更正

private static double celsiusEq(double temp){
    double celsius;
    celsius = (temp - 32) * 5 / 9;
    return celsius;

}

private static double Fahren(double temp){
    double fahrenheit;
    fahrenheit = temp * 9 / 5 + 32;
    return fahrenheit;
}

更新请求

returntype functionname(argumenttype argument2 ,argumenttype argument2,....argumenttype argumentN  ){
// local variable declaration
variableype variable1;
variableype variable2;
----------------------
variableype variableN;
 Your calculation

   return your value based on the return type; 

}

在此处查看更多详情

http://www.tutorialspoint.com/java/java_variable_types.htm

http://docs.oracle.com/javase/tutorial/java/javaOO/variables.html

http://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html

答案 1 :(得分:1)

实际上它非常简单。这是代码:

Celsius To Fahrenheit

private static double celsiusToFahrenheit(double celsius)
{
   double fahrenheit;
   fahrenheit = ((celsius * 9) / 5) + 32;
   return fahrenheit;
}

华氏度到摄氏度

private static double fahrenheitToCelsius(double fahrenheit)
{
   double celsius;
   celsius = ((fahrenheit - 32) * 5) / 9;
   return celsius;
}

执行数字操作时始终使用括号。它是一个很好的编程习惯。

以下是您的代码出了什么问题:

private static double celsiusEq(double celsius) 
{
    double temp; //TEMP HAS NO VALUE
    celsius = (temp - 32) * 5 / 9; //STILL YOU ARE USING IT
    return celsius;    
}

private static double Fahren(double fahrenheit) 
{
    double temp; //TEMP HAS NO VALUE
    fahrenheit = temp * 9 / 5 + 32; //STILL YOU ARE USING IT
    return fahrenheit;
}

不是使用摄氏和华氏变量,而是使用临时变量。

答案 2 :(得分:1)

这是你的代码:

private static double celsiusEq(double temp){
    double celsius;
    celsius = (temp - 32) * 5 / 9;
    return celsius;

}

private static double Fahren(double temp){
    double fahrenheit;
    fahrenheit = temp * 9 / 5 + 32;
    return fahrenheit;
}

需要完成多次更正

1。)由于你传递的是temp作为参数,为什么你不能在函数中使用

private static double Fahren(double temp){
    double fahrenheit;
    fahrenheit = temp * 9 / 5 + 32;
    return fahrenheit;
}

2。)尝试制作此类方法public而不是private 。提供更容易的可访问性和操作。

3.)由于您的函数返回double,您需要捕获结果以便打印/修改。像这样:

double answerInCelcius = celsiusEq(temp);  
System.out.println("Answer in Celsius is :" +answerInCelsius);

希望有所帮助:)

答案 3 :(得分:1)

您需要将方法更改为

private static double celsiusEq(double temp) {
    double celsius;
    celsius = (temp - 32) * 5 / 9;
    return celsius;

}

private static double Fahren(double temp) {
    double fahrenheit;
    fahrenheit = temp * 9 / 5 + 32;
    return fahrenheit;
}

您的变量名称已互换。

答案 4 :(得分:0)

尝试使用以下代码

import java.util.Scanner;
    public class Exercise3 {

    public static void main(String[] args) {
      double temp;
      String c = "c";
      String f = "f";
      String a;
      Scanner input = new Scanner(System.in);

       System.out.println("Please enter the temperature: ");
       temp = input.nextDouble();

       input = new Scanner(System.in);

    System.out.println("Please enter whether you wish to convert to Celsius or Fahrenheit(c or f)");
    a = input.nextLine();
    if(a.equals(c)){
        System.out.println(celsiusEq(temp));
    }else{
        Fahren(temp);
    }


    }


    private static double celsiusEq(double celsius){
    double temp = 0;
    celsius = (temp - 32) * 5 / 9;
    return celsius;

}

    private static double Fahren(double fahrenheit){
    double temp = 0;
    fahrenheit = temp * 9 / 5 + 32;
    return fahrenheit;
}

}

<强>输出

Please enter the temperature: 
250
Please enter whether you wish to convert to Celsius or Fahrenheit(c or f)
f
32.0

答案 5 :(得分:0)

您的代码中存在编译时错误: 如果不对其进行初始化,则无法使用局部变量。 这里面是celsiusEq,Fahren方法初始化临时变量,如:

double temp = 0;

然后它应该工作。

仅供参考。请阅读以下文章。

http://www.dummies.com/how-to/content/local-variables-in-java.html

答案 6 :(得分:0)

我会做类似的事情:

import java.util.Scanner;
public class Exercise3 {

    public static void main(String[] args) {
        double temp;
        String a;

        System.out.println("Please enter the temperature: ");
        Scanner input = new Scanner(System.in);
        temp = input.nextDouble();


        System.out.println("Please enter whether you wish to convert to Celsius or Fahrenheit(c or f)");
        a = input.nextLine();
        switch(a)
        {
            case "c":
                temp = toCelsius(temp);
                System.out.println("Temp in Celsius: " + temp);
                break;
            case "f":
                temp = toFahren(temp);
                System.out.println("Temp in Fahren: " + temp);
                break;
            default:
                System.out.println("Invalid Entry");
        }

    }


    private static double toCelsius (double fahren){
        return (fahren - 32) * 5 / 9;
    }

    private static double toFahren(double celsius){
        return celsius * 9 / 5 + 32;
    }

}

但是嘿!许多其他人打败了我。

答案 7 :(得分:0)

private static double celsiusEq(double temp) {
    return (temp - 32) * 5 / 9;

}

private static double Fahren(double temp) {
    return temp * 9 / 5 + 32;
}

并且不要忘记打印像System.out.println(celsius(temp))这样的结果值; : - )

答案 8 :(得分:0)

你只是在副方法中混淆temp和Celsius变量。所以我更改了代码,以下是代码的更新版本。

public class Exercise3 {

public static void main(String[] args) {
    double temp;
    String c = "c";
    String f = "f";
    String a;
    Scanner input = new Scanner(System.in);

    System.out.println("Please enter the temperature: ");
    temp = input.nextDouble();

    input = new Scanner(System.in);

    System.out
            .println("Please enter whether you wish to convert to Celsius or Fahrenheit(c or f)");
    a = input.nextLine();
    if (a.equals(c)) {
        celsiusEq(temp);
    } else {
        Fahren(temp);
    }

}

private static double celsiusEq(double temp ) {
    double celsius;
    celsius = (temp - 32) * 5 / 9;
            System.out.println("AFTER CONVERTION " + celsius);
    return celsius;

}

private static double Fahren(double temp ) {
    double fahrenheit;
    fahrenheit = temp * 9 / 5 + 32;
            System.out.println("AFTER CONVERTION " + fahrenheit);
    return fahrenheit;
}
     }