-2

これは、+と-のみが使用される単純な算術演算用の計算機です。ロジックの部分は非常に簡単ですが、コードが機能していないと言うのは恥ずかしいことです。入力は不明な数字です。例:「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
    }

}
4

2 に答える 2

0

文字列内の記号を探す方法に慣れていません。String.split(String regex)記号と数字を分割できるようにするために、を調べることをお勧めします。

于 2012-05-10T16:20:02.317 に答える
-2

あなたはコンストラクターを正しく呼んでいます...コンストラクターはvoidをサポートしていません..それが役立つことを願っています

于 2012-05-10T16:19:19.807 に答える