【发布时间】:2012-10-22 23:13:06
【问题描述】:
我想创建一个小型控制台程序,它可以从摄氏 - 华氏转换,反之亦然,这是我尝试过的代码:
import java.util.Scanner;
public class CelsiusFahrenheit {
private static Scanner s;
public static void main(String[] args) {
s = new Scanner(System.in);
char reponse = 'N', choixConvert;
do
{
do
{
System.out.println("Choisie le mode de converstion : ");
System.out.println("1 - Converstisseur Celesuis - Fahrenheit");
System.out.println("2 - Converstisseur Fahrenheit - Celesuis");
do
{
System.out.print("Votre Choix: ");
choixConvert = s.next().charAt(0);
if(choixConvert != '1' && choixConvert != '2')
System.out.println("Mode inconnu, veuillez réitérer votre choix.");
}
while(choixConvert!='1' && choixConvert!='2');
System.out.print("Température à convertir : ");
double temp = s.nextDouble();
System.out.print("Resultat est: " + ConvertCelesuisFahrenheit(choixConvert,temp));
System.out.println("\nSouhaitez-vous convertir une autre température ? (O/N)");
reponse = Character.toUpperCase(s.nextLine().charAt(0));
}while(reponse != 'O' && reponse != 'N');
}while(reponse == 'O');
System.out.println("Au revoir !");
}
private static Double ConvertCelesuisFahrenheit(int choixConvert,double temp )
{
if(choixConvert == 1)
return (9/5)*temp+32;
else
return (temp-32)*(5/9);
}
}
但我遇到了一个问题,即函数 ConvertCelesuisFahrenheit() 总是返回 0.0,然后它给了我这个错误:
线程“主”java.lang.StringIndexOutOfBoundsException 中的异常: 字符串索引超出范围:java.lang.String.charAt 处的 0(未知 来源)在CelsiusFahrenheit.main(CelsiusFahrenheit.java:33)
这是输出:
Choisie le mode de converstion :
1 - Converstisseur Celesuis - Fahrenheit
2 - Converstisseur Fahrenheit - Celesuis
Votre Choix: 2
Température à convertir : 33
Resultat est: 0.0
Souhaitez-vous convertir une autre température ? (O/N)
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at CelsiusFahrenheit.main(CelsiusFahrenheit.java:33)
【问题讨论】:
-
我认为如果不是那么……混乱的话,回答你的问题会容易得多。你有很多 do - while 循环,老实说,你可能可以在一个循环中完成它。如果你能告诉我们第 33 行,那就更好了。
-
这是第 33 行:
reponse = Character.toUpperCase(s.nextLine().charAt(0));
标签: java