ユーザーからの入力を受け取り、摂氏または華氏に変換するプログラムをJavaで作成しようとしています。したがって、ユーザーはいくつかの数字、スペース、CまたはFを入力します。プログラムは正常にコンパイルされますが、テストしようとすると、次のメッセージが表示されます。
Exception in thread "main" java.lang.NumberFormatException: For input string: (whatever number, space, F/C I put in to test it0
at java.lang.Integer.parseInt<Integer.java:492>
at java.lang.Integer.parseInt<Integer.java:527>
at Temp.Conv.main<TempConv.java:14>
Javaは、Parseを使用して文字列内の整数を検索しようとするのを嫌っていると思います。それを達成するための他の方法についての提案はありますか?
コードは次のとおりです:(ご存知のとおり、角かっことスペースがオフになっていることはわかっていますが、このサイトでは修正できません)
public class TempConv
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
String reply = "y";
while( reply.equalsIgnoreCase("y") )
{
System.out.println("Enter temp (ex. 70 F or 23 C): ");
String CF = input.nextLine(); // inputs string
int temp = Integer.parseInt(CF); // to get integers from string
for (int i = 0; i < CF.length(); ++i)
{
char aChar = CF.charAt(i);
if (aChar == 'F') // looking in string for F
// go to f2c()
{
f2c(temp);
}
else if (aChar == 'C') // looking for C
// go to c2f()
{
c2f(temp);
}
}
System.out.println("Would you like to covert another temp? <y/n> ");
reply = input.next();
}
}
static void f2c(int j)
{
int c = (j - 32)*(5/9);
System.out.println(j + "F = " + c + "C");
}
static void c2f(int k)
{
int f = (k*(5/9))+32;
System.out.println(k + "C = " + f + "F");
}
}