是否可以使用 Scanner 调用方法?
Is it possible to call a method using Scanner?
我是java的新手,刚刚学会使用方法。我写了一个简单的程序来转换温度:
public class TempConversion {
double temperature;
public TempConversion() {
}
public double celsiusToKelvin(double celsiusTemp) {
temperature = celsiusTemp + 273.15;
System.out.println("Converted temperature: " + temperature);
return temperature;
}
public double celsiusToFahrenheit(double celsiusTemp) {
temperature = celsiusTemp * 9 / 5 + 32;
System.out.println("Converted temperature: " + temperature);
return temperature;
}
public double fahrenheitToCelsius(double fahrenheitTemp) {
temperature = (fahrenheitTemp - 32) * 5 / 9;
System.out.println("Converted temperature: " + temperature);
return temperature;
}
public double fahrenheitToKelvin(double fahrenheitTemp) {
temperature = (fahrenheitTemp + 459.67) * 5 / 9;
System.out.println("Converted temperature: " + temperature);
return temperature;
}
public double kelvinToCelsius(double kelvinTemp) {
temperature = kelvinTemp - 273.15;
System.out.println("Converted temperature: " + temperature);
return temperature;
}
public double kelvinToFahrenheit(double kelvinTemp) {
temperature = kelvinTemp * 9 / 5 - 459.67;
System.out.println("Converted temperature: " + temperature);
return temperature;
}
public static void main(String[] args) {
TempConversion temp = new TempConversion();
temp.celsiusToFahrenheit(38);
temp.celsiusToKelvin(0);
}
}
但是,现在,对于转换温度的程序,我必须调用代码本身中的每个方法。如果我理解正确,我可以使用 Scanner class 来获取用户输入,那么我如何在调用其中一种方法的同时还使用 Scanner 来获取用户输入。我不确定我的问题是否有道理,但如果有人问我,我可以尝试澄清一下。
也许这不是最好的解决方案,但我认为在 Java.
中解释 scanner
函数的用处非常形象
只需将其复制并粘贴到代码的 main
区域:
public static void main(String[] args) {
TempConversion temp = new TempConversion();
temp.celsiusToFahrenheit(38);
temp.celsiusToKelvin(0);
Double number;
String input;
String output;
Scanner sc = new Scanner(System.in);
System.out.println("Input a number, only double allowed");
number = sc.nextDouble();
sc.nextLine();
System.out
.println("Input the first letter of the source unit. c for celsius, f for fahrenheit or k for kelvin");
input = sc.nextLine();
System.out
.println("Input the first letter of the target unit. c for celsius, f for fahrenheit or k for kelvin");
output = sc.nextLine();
if (input.equals("c")) {
if (output.equals("k")) {
temp.celsiusToKelvin(number);
} else if (output.equals("f")) {
temp.celsiusToFahrenheit(number);
}
} else if (input.equals("f")) {
if (output.equals("c")) {
temp.fahrenheitToCelsius(number);
} else {
temp.fahrenheitToKelvin(number);
}
} else {
if (output.equals("c")) {
temp.kelvinToCelsius(number);
} else {
temp.kelvinToFahrenheit(number);
}
}
sc.close();
}
关于 Scanner
的实际工作原理 在互联网上很容易找到它,但是一旦你声明了一个 Scanner
对象就没有必要再声明一个新的 Scanner
每次你想为其他东西保存输入时,就像上面所做的那样,你可以多次重复使用它。
一旦您从一个对象更改为另一个对象(在这个问题中是保持双精度,现在我们想要一个字符串),您必须清除缓冲区(那里是 sc.nextLine();
句子)。
而且,完成这一切后,记得关闭扫描仪。这不是强制性的,但如果不是,您将收到“警告”或类似信息。
我是java的新手,刚刚学会使用方法。我写了一个简单的程序来转换温度:
public class TempConversion {
double temperature;
public TempConversion() {
}
public double celsiusToKelvin(double celsiusTemp) {
temperature = celsiusTemp + 273.15;
System.out.println("Converted temperature: " + temperature);
return temperature;
}
public double celsiusToFahrenheit(double celsiusTemp) {
temperature = celsiusTemp * 9 / 5 + 32;
System.out.println("Converted temperature: " + temperature);
return temperature;
}
public double fahrenheitToCelsius(double fahrenheitTemp) {
temperature = (fahrenheitTemp - 32) * 5 / 9;
System.out.println("Converted temperature: " + temperature);
return temperature;
}
public double fahrenheitToKelvin(double fahrenheitTemp) {
temperature = (fahrenheitTemp + 459.67) * 5 / 9;
System.out.println("Converted temperature: " + temperature);
return temperature;
}
public double kelvinToCelsius(double kelvinTemp) {
temperature = kelvinTemp - 273.15;
System.out.println("Converted temperature: " + temperature);
return temperature;
}
public double kelvinToFahrenheit(double kelvinTemp) {
temperature = kelvinTemp * 9 / 5 - 459.67;
System.out.println("Converted temperature: " + temperature);
return temperature;
}
public static void main(String[] args) {
TempConversion temp = new TempConversion();
temp.celsiusToFahrenheit(38);
temp.celsiusToKelvin(0);
}
}
但是,现在,对于转换温度的程序,我必须调用代码本身中的每个方法。如果我理解正确,我可以使用 Scanner class 来获取用户输入,那么我如何在调用其中一种方法的同时还使用 Scanner 来获取用户输入。我不确定我的问题是否有道理,但如果有人问我,我可以尝试澄清一下。
也许这不是最好的解决方案,但我认为在 Java.
中解释scanner
函数的用处非常形象
只需将其复制并粘贴到代码的 main
区域:
public static void main(String[] args) {
TempConversion temp = new TempConversion();
temp.celsiusToFahrenheit(38);
temp.celsiusToKelvin(0);
Double number;
String input;
String output;
Scanner sc = new Scanner(System.in);
System.out.println("Input a number, only double allowed");
number = sc.nextDouble();
sc.nextLine();
System.out
.println("Input the first letter of the source unit. c for celsius, f for fahrenheit or k for kelvin");
input = sc.nextLine();
System.out
.println("Input the first letter of the target unit. c for celsius, f for fahrenheit or k for kelvin");
output = sc.nextLine();
if (input.equals("c")) {
if (output.equals("k")) {
temp.celsiusToKelvin(number);
} else if (output.equals("f")) {
temp.celsiusToFahrenheit(number);
}
} else if (input.equals("f")) {
if (output.equals("c")) {
temp.fahrenheitToCelsius(number);
} else {
temp.fahrenheitToKelvin(number);
}
} else {
if (output.equals("c")) {
temp.kelvinToCelsius(number);
} else {
temp.kelvinToFahrenheit(number);
}
}
sc.close();
}
关于 Scanner
的实际工作原理 在互联网上很容易找到它,但是一旦你声明了一个 Scanner
对象就没有必要再声明一个新的 Scanner
每次你想为其他东西保存输入时,就像上面所做的那样,你可以多次重复使用它。
一旦您从一个对象更改为另一个对象(在这个问题中是保持双精度,现在我们想要一个字符串),您必须清除缓冲区(那里是 sc.nextLine();
句子)。
而且,完成这一切后,记得关闭扫描仪。这不是强制性的,但如果不是,您将收到“警告”或类似信息。