为什么这个java代码不工作?简单计算器

时间:2012-05-10 16:16:39

标签: java

这是一个简单算术运算的计算器,只使用+和 - 。逻辑部分非常简单,但我很尴尬地说代码不起作用。输入是未知数字。例如:“4/2”或“42 + 34”都应该是可以接受的。我对琴弦及其功能不太满意,所以请帮忙。谢谢! :)

/*
 *Calculator with only + and - 
 */
import java.util.Scanner;

class Calculator {
    public static String strng;

    public static void main(String[]args){
        Calculator calc = new Calculator();
        calc.Calculator();
    }

    public void Calculator()
    {
        int op1=0,op2=0,flag=0,index=0;
        String Operator=null;
        System.out.println("java calculator");
        Scanner sc=new Scanner(System.in);

        strng= sc.nextLine();

        if(strng.indexOf("+")>0) {
            Operator = "+";
            index=strng.indexOf("+");
            if(strng.lastIndexOf("+")!=index){
              Operator="++";
              flag=1;
            }
        }
        else if(strng.indexOf("-")>0) {
            Operator="-";
            index=strng.indexOf("-");
            if(strng.lastIndexOf("-")!=index){
              Operator="--";
              flag=1;
            }
        } else if(strng.indexOf("*")>0) {
            Operator="*";
            index=strng.indexOf("*");
        } else if(strng.indexOf("/")>0) {
            Operator="/";
            index=strng.indexOf("/");
        } 

        if((index>0)&&(flag==0)) {
           op1=Integer.parseInt(strng.substring(0,index-1));
           op2=Integer.parseInt(strng.substring(index+1));
           Operation(Operator,op1,op2);
        }

        if(flag==1) {
           op1=Integer.parseInt(strng.substring(0,index-1));
           op2=Integer.parseInt(strng.substring(index+2)); 
           Operation(Operator,op1,op2);
        } else { //to separate the operator and operands string functions.
           System.out.println("Invalid choice");
        }
     }  


     public void Operation(String Operator, int operand1, int operand2) {
        if(Operator.equals("+")){ Add(operand1,operand2); }
        if(Operator.equals("-")){ Subtract(operand1,operand2); }
        if(Operator.equals("*")){ Multiply(operand1,operand2); }
        if(Operator.equals("/")){ Divide(operand1,operand2); }
        if(Operator.equals("++")){ Increment(operand1); }
        if(Operator.equals("--")){
            Decrement(operand1);
        } else {
            System.out.println("Invalid entry");
        }
    } 


    void Add(int op1, int op2) {
        System.out.println(strng+"="+(op1+op2));
    }

    void Subtract(int op1, int op2) {
        System.out.println(strng+"="+(op1-op2));
    }  

    void Increment(int op1) {
        System.out.println(strng+"="+(op1+1));
    }

    void Decrement(int op1) {
        System.out.println(strng+"="+(op1-1));
    }

    void Multiply(int op1, int op2) {
        int ans=0;
        int  x = op1<op2?op1:op2;
        int y = op1>op2?op1:op2;
        for(int i=1;i<=x;i++){
            ans=ans+y;
        } 
        System.out.println(strng+"="+ans);
    }

    void Divide(int op1, int op2) {
        int count=0,rem=op1;

        while(rem>=op2){
            rem=rem-op2;
            count=count+1;
        } 
        System.out.println(strng+"="+count); //return rem for modulo operand
    }

}

2 个答案:

答案 0 :(得分:0)

我对你在字符串中寻找符号的方式感到不舒服。我建议您查看String.split(String regex),这样您就可以分割符号和数字。

答案 1 :(得分:-2)

你正在调用一个构造函数...构造函数不支持void ..希望有所帮助