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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

2224閲覧

Javaで時計を表示するプログラムを勉強しています。

EriF

総合スコア2

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/06/23 06:39

Javaで時計を表示するプログラムを勉強しています。
以下の問題がどうしても解決できず、困っています。
よろしくお願いいたします。

発生しているエラー

Main.java:37: error: bad operand types for binary operator '+' h = h + zone; ^ first type: int second type: JTextField

該当のソースコード

Java

1import java.awt.event.* ; 2import javax.swing.*; 3import java.util.*; 4 5public class ClockPanel extends JPanel implements ActionListener 6{ 7 private JLabel label; // comment 8 private JButton button; 9 private JTextField zone ; 10 private JTextArea results ; 11 private int d = 04; 12 private int mt = 06; 13 private int y = 2020; 14 private int h = 14; 15 private int m = 50; 16 private int s = 06; 17 18 // constructor 19 public ClockPanel ( ) 20 { 21 label = new JLabel("Current time : 04/06/2020 14:50:06 UTC+1\nPlease input new time zone"); 22 zone = new JTextField( 3); 23 button = new JButton("Calculate"); 24 results = new JTextArea("New time zone",5,10); 25 26 add ( label ) ; 27 add ( zone ) ; 28 add ( button ); 29 add ( results ) ; 30 results.setEditable(false); 31 button.addActionListener(this) ; 32 zone.addActionListener(this) ; 33 } 34 35 public int calHour() 36 { 37 h = h + zone; 38 return h; 39 } 40 41 public void actionPerformed (ActionEvent e ) 42 { 43 44 if (h >= 24) 45 { 46 h %= 24; 47 d = d + 1; 48 }else if (h < 0) 49 { 50 h = Math.abs(h) ; 51 d = d - 1; 52 } 53 54 55 String toScreen = "New time : "+d+"/06/2020 "+h+":50:06"; 56 results.setText (toScreen); 57 } 58 // end actionPerfomed 59} // end class 60 61

試したこと

どこに書き直しても、新しくコンストラクターを追加して計算させても同じエラーになります。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

発生しているエラー

エラーメッセージのとおりです。intJTextFieldの足し算はできません。

投稿2020/06/23 06:42

maisumakun

総合スコア145208

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

EriF

2020/06/23 06:53

ありがとうございます。 h = h + (int)zone; にしてみたのですが、これでも無理でした。 私の頭では考え付かないのですが、どうすればいいか教えていただけますか?
EriF

2020/06/23 07:12

では、 public String getText(int z) { return z; } でいいのでしょうか?? Javaが初めてで、課題をやっているのですが、JTextFieldに入力されるものが数値で、 習ったのは文字を入力して表示ということだけなので。
maisumakun

2020/06/23 07:13

そこで「自分でgetText()を実装する」方向に進むとは全く考えていませんでした。
EriF

2020/06/23 07:18

すみません。。。 全くの初心者から習い始めたので。
maisumakun

2020/06/23 07:23

では、少し戻ってみましょう。 もともとの「 h = h + zone;」は、何をしたくて書いたコードですか?
EriF

2020/06/23 07:30

現在の時間に入力されたゾーン数値 UTC+10 などの10を入れてもらい、計算させるつもりでした。
maisumakun

2020/06/23 07:31

では、zoneから値をとってくる必要がありますね。どうすればいいでしょうか?
EriF

2020/06/23 07:36

zone.getText() ですね。見つけました! それをどこかに格納して、それごとintにしてしまえばいいのかと。
maisumakun

2020/06/23 07:42

そうですね、結果はStringなのでintへの変換の必要があります。
EriF

2020/06/23 07:55

ありがとうございました。できました! ひとつ課題が終わりました。 まだ残っているのですが、自力でやって、エラーは出ると思いますので、 その時は教えていただけますでしょうか? よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問