英文:
Optimization of Temperature converter in Java
问题
public static void main(String[] args) {
Double temperature, result;
String menuChoice = "1. Celsius to Fahrenheit \n2. Fahrenheit to Celsius";
int anyChoiceMenu = 3;
System.out.println("Choose a conversion");
System.out.println(menuChoice);
Scanner sc = new Scanner(System.in);
while (true) {
try {
anyChoiceMenu = sc.nextInt();
System.out.println("What temperature you wanna convert: ");
temperature = sc.nextDouble();
if (anyChoiceMenu == 1) {
result = 1.8 * temperature + 32;
System.out.println("Result: " + result + " Fahrenheit");
break;
} else if (anyChoiceMenu == 2) {
result = (5 * (temperature - 32.0)) / 9.0;
System.out.println("Result: " + result + " Celsius");
break;
} else {
System.out.println("Wrong number. Try again!");
sc.nextLine();
}
} catch (Exception e) {
System.out.println("Only numbers bro.");
System.out.println(menuChoice);
sc.nextLine();
continue;
}
}
}
英文:
So I am struggling to get back to programming and I made this piece of code that converts Celsius to Fahrenheit and vice versa.
Its working fine but I must make it shorter. Can you make it work with less lines?
public static void main(String[] args) {
Double temperature = 0.0;
Double result = 0.0;
String menuChoise = "1. Celsius to Fahrenheit \n2. Fahrenheit to Celsius";
int anyChoiseMenu = 3;
System.out.println("Chose a conversion");
System.out.println(menuChoise);
Scanner sc = new Scanner(System.in);
while (true) {
try {
anyChoiseMenu = sc.nextInt();
if (anyChoiseMenu == 1) {
System.out.println("What temperature you wanna convert: ");
temperature = sc.nextDouble();
result = (1.8) * temperature + 32;
System.out.println("Result: " + result + " Fahrenheit");
break;
} else if (anyChoiseMenu == 2) {
System.out.println("What temperature you wanna convert: ");
temperature = sc.nextDouble();
result = ((5 * (temperature - 32.0)) / 9.0);
System.out.println("Result: " + result + " Celsius");
break;
} else {
System.out.println("Wrong number. Try again!");
sc.nextLine();
}
} catch (Exception e) {
System.out.println("Only numbers bro.");
System.out.println(menuChoise);
sc.nextLine();
continue;
}
}
}
答案1
得分: 1
你的代码似乎运行得很好。通过以下一些技巧,你可以减少一些代码行数。
import java.util.InputMismatchException;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String menuChoice = "\n选择转换:\n1. 摄氏度到华氏度\n2. 华氏度到摄氏度";
int menu;
while (true) {
System.out.println(menuChoice);
try {
menu = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("无效输入,只允许输入数字!");
sc.nextLine();
continue;
}
if (menu >= 3) {
System.out.println("错误的数字。请重试!");
} else {
System.out.print("你想要转换的温度:");
double temperature = sc.nextDouble();
if (menu == 1) {
temperature = 1.8 * temperature + 32;
} else if (menu == 2) {
temperature = (temperature - 32) / 1.8;
}
String grade = (menu == 1) ? "摄氏度" : "华氏度";
System.out.format("结果:%.2f " + grade + '\n', temperature);
break;
}
}
}
}
英文:
Your code seems to be running just fine. With a few tricks, as seen below you could cut a few lines of code.
import java.util.InputMismatchException;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String menuChoice = "\nChoose a conversion: \n1. Celsius to Fahrenheit \n2. Fahrenheit to Celsius";
int menu;
while (true) {
System.out.println(menuChoice);
try {
menu = sc.nextInt();
} catch (InputMismatchException e){
System.out.println("Invalid input, only numbers are allowed!");
sc.nextLine();
continue;
}
if (menu >= 3) {
System.out.println("Wrong number. Try again!");
} else {
System.out.print("What temperature you wanna convert: ");
double temperature = sc.nextDouble();
if (menu == 1) {
temperature = 1.8 * temperature + 32;
} else if (menu == 2) {
temperature = (temperature - 32) / 1.8;
}
String grade = (menu == 1)? "Celsius": "Fahrenheit";
System.out.format("Result: %.2f " + grade + '\n', temperature);
break;
}
}
}
}
答案2
得分: 0
public static void main(String... args) {
Scanner scan = new Scanner(System.in);
scan.useLocale(Locale.ENGLISH);
while (true) {
System.out.println("选择转换方式:");
System.out.println("1. 摄氏度转华氏度");
System.out.println("2. 华氏度转摄氏度");
System.out.println("3. 退出");
System.out.print("> ");
int menu = scan.nextInt();
if (menu == 1) {
System.out.print("请输入要转换的温度:");
double celsius = scan.nextDouble();
double fahrenheit = 1.8 * celsius + 32;
System.out.format(Locale.ENGLISH, "结果:%.2f 华氏度\n", fahrenheit);
} else if (menu == 2) {
System.out.println("请输入要转换的温度:");
double fahrenheit = scan.nextDouble();
double celsius = (fahrenheit - 32) / 1.8;
System.out.format(Locale.ENGLISH, "结果:%.2f 摄氏度\n", celsius);
} else if (menu == 3)
break;
else
System.out.println("错误数字。请重试!");
System.out.println();
}
}
英文:
public static void main(String... args) {
Scanner scan = new Scanner(System.in);
scan.useLocale(Locale.ENGLISH);
while (true) {
System.out.println("Chose a conversion:");
System.out.println("1. Celsius to Fahrenheit");
System.out.println("2. Fahrenheit to Celsius");
System.out.println("3. Exit");
System.out.print("> ");
int menu = scan.nextInt();
if (menu == 1) {
System.out.print("What temperature you wanna convert: ");
double celsius = scan.nextDouble();
double fahrenheit = 1.8 * celsius + 32;
System.out.format(Locale.ENGLISH, "Result: %.2f Fahrenheit\n", fahrenheit);
} else if (menu == 2) {
System.out.println("What temperature you wanna convert: ");
double fahrenheit = scan.nextDouble();
double celsius = (fahrenheit - 32) / 1.8;
System.out.format(Locale.ENGLISH, "Result: %.2f Celsius\n", celsius);
} else if (menu == 3)
break;
else
System.out.println("Wrong number. Try again!");
System.out.println();
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论