我正在研究方法并且已经做了一个练习。我对这个特定问题的处理方式有点不确定。
我们提出的问题是:
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分钟里一直在看这个!
答案 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;
}
}