Calculator int choice = Integer.parseInt(char_a); java的

时间:2015-11-09 02:07:34

标签: java calculator

尝试在java上创建一个简单的计算器。代码中没有出现错误。但它仍然根本不起作用。我错过了什么吗?

import java.util.Scanner;

public class JavaApplication15 {


    public static void main(String[] args) {
    Scanner in = new Scanner(System.in);



      System.out.println("This is a calculator. Enter a letter followed by a number to calculate it.");
       System.out.println(" S = sine \n C = Cosine \n T = Tangent \n R = Square Root \n N = natural Log \n X = exit the program");
        String num = in.nextLine();

        String sValue = num.substring(2);
        String char_a = num.substring(0);

       int choice = Integer.parseInt(char_a);
       double dValue = Double.parseDouble(sValue);

       while (choice != 'x'){
        switch(choice){

            case 's':
                Math.sin(dValue);
                System.out.println("The sine of your number is " + dValue);
                break;
            case'c':    
                 Math.cos(dValue);
                 System.out.println("The Cosine of your number is " + dValue);
                  break;
            case't':   
                 Math.tan(dValue);
                 System.out.println("The Tangent of your number is " + dValue);
                  break;
            case'r': 
                 Math.sqrt(dValue);
                 System.out.println("The square root of your number is " + dValue);
                  break;
            case'n':    
                 Math.log(dValue);
                 System.out.println("The Log of your number is " + dValue);
                  break;
            case'x':
                break;

        }
       }

    }

}

2 个答案:

答案 0 :(得分:1)

我想我看到了你的错误。

您正在使用Math类执行操作,但未将操作结果分配回变量。

例如,Math.cos(dValue);应该是dValue = Math.cos(dValue);

答案 1 :(得分:0)

您的代码存在一些问题。

首先,您没有正确使用.substring方法。它返回从您指定的索引到String结尾的所有内容。因此对于用户输入“S 4”

sValue等于“4”,但char_a等于“S 4”。

使用子字符串方法的方法是:

value = input.substring(2);
operation = input.substring(0,1);

我实际上建议你使用类似的东西:

params = input.split(" ");

然后你有:

params[0] // as your command

params[1] // as your value

这样您就不必担心每个位实际占用多少个符号。

接下来,不要将命令转换为char。我以前的建议意味着你应该使用像

这样的东西
if (params[0].equals("sin")) {

} else if (params[0].equals("cos")) {

} else {
// catch unknown command
}

但是,您只需通过以下方式转换为char:

sValue.toCharArray()[0]

此外,没有理由说你的switch语句应该在while循环中。没有什么是可以连续完成的,它只会继续打印相同的答案。最后,ajb说,你计算值并抛弃它们,同时打印旧值。你必须使用:

System.out.println("The Tangent of your number is " + Math.tan(dValue));