質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.02%

エラー

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 891

msia

score 11

c:\java10\mondai>javac Dentaku.java

c:\java10\mondai>java Dentaku
エラー: メイン・クラスDentakuが見つからなかったかロードできませんでした

どこをみても判りません


package dentaku;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Dentaku extends JFrame {
    private static final long serialVersionUID = 1L;

    JPanel contentPane = new JPanel();
    BorderLayout borderLayout1 = new BorderLayout();
    JTextField result = new JTextField(""); //計算結果を表示するテキストフィールド
    double stackedValue = 0.0; //演算子ボタンを押す前にテキストフィールドにあった値
    boolean isStacked = false; //stackedValueに数値を入力したかどうか
    boolean afterCalc = false; //演算子ボタンを押した後かどうか
    String currentOp = ""; //押された演算子ボタンの名前

    //フレームのビルド
    public Dentaku() {
        contentPane.setLayout(borderLayout1);
        this.setSize(new Dimension(250, 300));
        this.setTitle("電子式卓上計算機");
        this.setContentPane(contentPane);

        contentPane.add(result, BorderLayout.NORTH); //テキストフィールドを配置

        JPanel keyPanel = new JPanel(); //ボタンを配置するパネルを用意
        keyPanel.setLayout(new GridLayout(4, 4)); //4行4列のGridLayoutにする
        contentPane.add(keyPanel, BorderLayout.CENTER);

        keyPanel.add(new NumberButton("7"), 0); //ボタンをレイアウトにはめこんでいく
        keyPanel.add(new NumberButton("8"), 1);
        keyPanel.add(new NumberButton("9"), 2);
        keyPanel.add(new CalcButton("÷"), 3);
        keyPanel.add(new NumberButton("4"), 4);
        keyPanel.add(new NumberButton("5"), 5);
        keyPanel.add(new NumberButton("6"), 6);
        keyPanel.add(new CalcButton("×"), 7);
        keyPanel.add(new NumberButton("1"), 8);
        keyPanel.add(new NumberButton("2"), 9);
        keyPanel.add(new NumberButton("3"), 10);
        keyPanel.add(new CalcButton("-"), 11);
        keyPanel.add(new NumberButton("0"), 12);
        keyPanel.add(new NumberButton("."), 13);
        keyPanel.add(new CalcButton("+"), 14);
        keyPanel.add(new CalcButton("="), 15);

        contentPane.add(new ClearButton(), BorderLayout.SOUTH);//Cボタンを配置する
        this.setVisible(true);
    }

    /* テキストフィールドに引数の文字列をつなげる */
    public void appendResult(String c) {
        if (!afterCalc) //演算子ボタンを押した直後でないなら
            result.setText(result.getText() + c); //押したボタンの名前をつなげる
        else {
            result.setText(c); //押したボタンの文字列だけを設定する(いったんクリアしたかに見える)
            afterCalc = false;
        }
    }

    /* 数字を入力するボタンの定義 */
    public class NumberButton extends JButton implements ActionListener {
        private static final long serialVersionUID = 1L;

        public NumberButton(String keyTop) {
            super(keyTop); //JButtonクラスのコンストラクタを呼び出す
            this.addActionListener(this); //このボタンにアクションイベントのリスナを設定
        }

        public void actionPerformed(ActionEvent evt) {
            String keyNumber = this.getText(); //ボタンの名前を取り出す
            appendResult(keyNumber); //ボタンの名前をテキストフィールドにつなげる
        }
    }

    /* 演算子ボタンを定義 */
    public class CalcButton extends JButton implements ActionListener {
        private static final long serialVersionUID = 1L;

        public CalcButton(String op) {
            super(op);
            this.addActionListener(this);
        }

        public void actionPerformed(ActionEvent e) {
            if (isStacked) { //以前に演算子ボタンが押されたのなら計算結果を出す
                double resultValue = (Double.valueOf(result.getText()))
                        .doubleValue();
                if (currentOp.equals("+")) //演算子に応じて計算する
                    stackedValue += resultValue;
                else if (currentOp.equals("-"))
                    stackedValue -= resultValue;
                else if (currentOp.equals("×"))
                    stackedValue *= resultValue;
                else if (currentOp.equals("÷"))
                    stackedValue /= resultValue;
                result.setText(String.valueOf(stackedValue)); //計算結果をテキストフィールドに設定
            }
            currentOp = this.getText(); //ボタン名から押されたボタンの演算子を取り出す
            stackedValue = (Double.valueOf(result.getText())).doubleValue();
            afterCalc = true;
            if (currentOp.equals("="))
                isStacked = false;
            else
                isStacked = true;
        }
    }

    /* クリアボタンの定義 */
    public class ClearButton extends JButton implements ActionListener {

        private static final long serialVersionUID = 1L;

        public ClearButton() {
            super("C");
            this.addActionListener(this);
        }

        public void actionPerformed(ActionEvent evt) {
            stackedValue = 0.0;
            afterCalc = false;
            isStacked = false;
            result.setText("");
        }
    }
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

環境変数のCLASSPATHに.がないのではないでしょうか?

SETコマンドで確認してみてはどうでしょう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/26 15:48

    javacがないので今一ぼんやりしていますが
    dentakuフォルダを作成して
    その配下にこのプログラムとクラスファイルを置いて
    その上位フォルダをカレントディレクトリにして
    java dentaku.Dentaku
    というイメージです。

    キャンセル

  • 2015/06/26 16:05

    そもそもこのDentaku.javaにmainが存在しません。

    Dentaku.javaの最後尾くらいに
    public static void main(String args[]){
    Dentaku c = new Dentaku();
    c.show();
    }
    を追加して
    javac dentaku\Dentaku.java
    java dentaku.Dentaku
    で動きました。

    キャンセル

  • 2015/06/29 15:51

    c.show();はいらなかったんですが見事動きました
    ありがとうございました
    とてもすっきりしました

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.02%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る