Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

javaを使った電卓の作成(ツールはeclipseなどで)

import java.awt.Button;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Calculator extends JFrame implements ActionListener{

ここから簡単な電卓のプログラムを書くとどうなりますか?(小数の計算なし、四則計算だけの単純な物)
お暇な方どうぞ

7

回答

94390

閲覧

7件の回答

評価

0

人のコードを見たいなら、まずは自分のものを出すといい。

評価

0

人にやらせようという魂胆が見え見えですよ

評価

0

import java.awt.Button;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Calculator extends JFrame implements ActionListener{
 public static void main(String args[]){
   int a = Integer.parseInt(args[0]);
   int b = Integer.parseInt(args[1]);
   System.out.println(String.format("a+b=%d",a+b));
 }
}

評価

0


public class Calc2 {

    Token input;
    int pos;
    String tok;
    
    public Calc2(String s) {
        input = new Token(s, " \t()+*/%");
    }
    
    public void init() {
        next();
    }
    public double parse() {
        return addsub();
    }
    
    double addsub() {
        double left = muldiv();
        
        while (true) {
            
            char ch = 
input.tok.charAt(0);
            if (ch == '+') {
                
debug("addsub:add");
                next();
                left += muldiv();
            } else if (ch == '-') {
                
debug("addsub:sub");
                next();
                left -= muldiv();
            } else {
                
debug("addsub:other > " + input.tok);
                break;
            }
        }
        
        return left;
    }
    
    double muldiv() {
        double left = element();
        
        while (true) {
        
            char ch = 
input.tok.charAt(0);
            if (ch == '*') {
                
debug("muldiv:mul");
                next();
                left *= element();
            } else if (ch == '/') {
                
debug("muldiv:div");
                next();
                left /= element();
            } else if (ch == '%') {
                
debug("muldiv:mod");
                next();
                left %= element();
            } else {
                
debug("muldiv:other > " + input.tok);
                break;
            }
        }
        
        return left;
    }
    
    void debug(String s) {
        //System.out.println("DEBUG:"+s);
    }
    void next() {
        while (input.hasNext()) {
            if (isSpace(input.next())) 
{
                continue;
            } else {
                return ;
            }
        }
    }
    
    double element() {
        double res = 0;
        
        while (true) {
            char ch = 
input.tok.charAt(0);
            if (ch == '(') {
                
debug("element:lpar");
                next();
                res = addsub();
                char ch2 = 
input.tok.charAt(0);
                if (ch2 != ')') {
                    throw new 
RuntimeException(") required.");
                }
                next();
            } else {
                
debug("element:element");
                try {
                    res = 
Double.valueOf(input.tok).doubleValue();
                    next();
                } catch 
(NumberFormatException e) {
                    // 記号
                }
                break;
            }
        }
        return res;
    }

    public void parseAndResult() {
        input.reset();
        init();
        double d = parse();
        
        
System.out.println(input.getString() + " = " + d);
    }

    public void print() {
        while (input.hasNext()) {
            String ss = input.next();
            if (isSpace(ss)) continue;
            debug("RES:'" + ss + "'");
        }
    }
    
    boolean isSpace(String ss) {
        if (ss.length() == 1 && 
(ss.charAt(0) == ' ' || ss.charAt(0) == '\t')) 
return true;
        return false;
    }
    
    
    
    public static class Token {
        char[] de;
        char[] in;
        int pos;
        String tok;
        String org;
        
        public Token(String s, String de) 
{
            org = s;
            in = s.toCharArray();
            this.de = 
de.toCharArray();
            pos = 0;
        }
        public void reset() {
            pos = 0;
            tok = null;
            
        }
        public String getString() {
            return org;
        }
        public boolean hasNext() {
            return pos < in.length;
        }
        
        public String next() {
            StringBuffer sb = new 
StringBuffer();
            
            while (pos < in.length) {
                char ch = 
in[pos++];
                if (match(ch)) {
                    if 
(sb.length() > 0) {
                        
pos--;
                        
break;
                    } else {
                        
sb.append(ch);
                        
break;
                    }
                } else {
                    
sb.append(ch);
                }
            }
        //    System.out.println("SB=>" 
+ sb.toString());
            tok = sb.toString();
            return tok;
        }
        boolean match(char ch) {
            for (char cc : de) {
                if (cc == ch) {
                    return 
true;
                }
            }
            
            return false;
        }
    }

    public static void main(String[] args) {
        Calc2 c = new Calc2(args[0]);
        
        c.print();
        
        c.parseAndResult();
    }


}

/*
  使い方:
  java Calc2 "1+2+3+4*50"

*/

評価

0

いまいち。
エラー処理が抜けてるのと、)がうまく動かない。
適当だから、適当に拡張して。

評価

0

なんだか微妙に計算合わないな・・・
ダメだこりゃ;;

評価

0

3項以上だと逆ポーランドとか使わないと演算順序がいまいちでない?

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。