0

我正在尝试创建一个计算器,通过获取用户的输入来计算十进制数。我正在尝试添加这两个值。我的代码如下:

import java.io.*;
public class calc{
    public static void main(String[] args)throws Exception{
        System.out.println("Input 1st no");
        InputStreamReader reader = new InputStreamReader(System.in);
        BufferedReader p=new BufferedReader(reader);
        String k = p.readLine();
        float a= (float) k;
        System.out.println("Enter 2nd no");
        InputStreamReader read = new InputStreamReader(System.in);
        BufferedReader l = new BufferedReader(read);
        String z = l.readLine();
        float b = (float) z;
        float res = (b+a);
        System.out.println("Final result is: " +res);
    }
}

那么应该如何解决这个问题呢?我试过编译没有运气。它给出了错误“不兼容的类型”,我知道它不兼容,但我认为没有其他方法可以检测十进制数。

4

4 回答 4

2

你不能简单地做float a= (float) k;to cast from Stringto float

你应该打电话给Float.parseFloat(k)

请注意,NumberFormatException如果字符串不包含可解析的浮点数,此函数可能会抛出 a。

于 2013-09-05T12:36:24.353 回答
1

你走得很远。

这应该这样做:

    float a = Float.valueOf(k);

    float b = Float.valueOf(z);

如果我可以提供一些提示,首先,命名你的班级Calc而不是calc:)

也许考虑使用doubleover float(由于精度问题)。

并使用更有意义(更长)的变量名(google camel-case)。

玩得开心!

于 2013-09-05T12:34:42.340 回答
0

该方法readLine()返回String。你不能直接String投到float。你可以做Float f = Float.valueOf(k)

于 2013-09-05T12:35:09.950 回答
0

你不能像这样转换类型:

 String z = l.readLine();
 float b = (float) z;

要将字符串转换为浮点数,请使用

Float b = Float.parseFloat(z);
于 2013-09-05T12:37:29.730 回答