• ベストアンサー

Javaを使ってデジタル時計を作りたいです。時、分、秒も表示させたいです。

Javaの勉強をしている初心者の者です。 Eclipseを使ってデジタル時計を作ろうと試みているのですが、どうしても"●●時●●分●●秒"というように、表示させることができません(;_;) また、時刻は16時台になっていますが、深夜1時とかにアプレットを作動させると、"10235"というように、5桁で表記されてしまいます。 "010235"のように、6桁で時刻を表示させることができません(;_;) 私が書いたコードのどこを修正すれば、6桁の時刻で、なおかつ、時、分、秒も入ったデジタル時計を表示できるのか、教えていただければ幸いです(>_<) よろしくお願いします<m(__)m> import java.awt.*; import java.applet.*; import java.util.*; public class digital_clock extends Applet{ public void paint(Graphics g){ int hour_of_day, min, sec; Calendar cal = Calendar.getInstance(); hour_of_day = cal.get(Calendar.HOUR_OF_DAY ); min = cal.get(Calendar.MINUTE); sec = cal.get(Calendar.SECOND); String s; s = "hour_of_day+月+min+分+sec+秒"; g.setFont(new Font("SansSerif", Font.PLAIN, 60)); g.drawString(Integer.toString(hour_of_day), 20, 50); g.drawString(Integer.toString(min), 85, 50); g.drawString(Integer.toString(sec), 150, 50); } }

  • dj-s
  • お礼率81% (228/280)
  • Java
  • 回答数4
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

#2です。 #1さんの指摘されているのは、「sは代入されているだけで使用されていない」ということなのですが。 0埋めに関しては、参考URLの方法のひとつをコピーしてくればよかったのですが、まあこういう時刻の場合には1桁か2桁というのが判りきっていますので、単純に1桁の場合には頭0を補うという方法でもよろしいかと。 import java.awt.*; import java.applet.*; import java.util.*; public class digital_clock extends Applet{ public void paint(Graphics g){ int hour_of_day, min, sec; Calendar cal = Calendar.getInstance(); hour_of_day = cal.get(Calendar.HOUR_OF_DAY ); min = cal.get(Calendar.MINUTE); sec = cal.get(Calendar.SECOND); String s; s = pad0(hour_of_day)+"時"+pad0(min)+"分"+pad0(sec)+"秒"; g.setFont(new Font("SansSerif", Font.PLAIN, 60)); g.drawString(s, 20, 50); } String pad0(int val){ if(val<10){ return "0"+val; }else{ return ""+val; } } }

dj-s
質問者

お礼

うまくいきました! よくわかりませんが、 padding↓ http://www.mars.dti.ne.jp/~torao/program/general/portability.html と呼ばれるもので、0を埋めるのですね。 「pad0」とはその機能があるそうで(^_^;) いやはや助かりました、ありがとうございます<m(__)m>

その他の回答 (3)

  • HarukaV49
  • ベストアンサー率53% (48/89)
回答No.3

とりあえず、行い事は以下の様な内容だろうと想像します。 コツとしては、時刻のフォーマットは別の場所で作成しましょう。 paint(Graphics g) メソッド内には、描画関連処理しか書かないということです。 import java.applet.Applet; import java.awt.Font; import java.awt.Graphics; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Locale; /** * デジタル時計を描画します。 * 現状、自動更新はされません。 * @author HarukaV49 */ public class DigitalClock extends Applet{ /** * @see java.awt.Container#paint(java.awt.Graphics) */ @Override public void paint(Graphics g){ super.paint(g); g.setFont(new Font("SansSerif", Font.PLAIN, 60)); g.drawString( format(Calendar.getInstance(), "HH時mm分ss秒"), 20, 50 ); } /** * カレンダーにフォーマットを設定します。 * @param calendar カレンダー * @param pattern 書式文字列 * @return 書式付けした日付 */ public static String format( Calendar calendar, String pattern ) { return format( calendar, pattern, Locale.JAPAN ); } /** * カレンダーにフォーマットを設定します。 * @param calendar カレンダー * @param pattern 書式文字列 * @param locale ロケール * @return 書式付けした日付 */ public static String format( Calendar calendar, String pattern, Locale locale ) { DateFormat df = new SimpleDateFormat(pattern, locale ); df.setTimeZone( calendar.getTimeZone() ); return df.format(calendar.getTime()); } }

dj-s
質問者

お礼

import java.applet.Applet; import java.awt.Font; import java.awt.Graphics; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Locale; public class digital_clock extends Applet{ public void paint(Graphics g){ super.paint(g); g.setFont(new Font("SansSerif", Font.PLAIN, 60)); g.drawString( format(Calendar.getInstance(), "HH時mm分ss秒"), 20, 50 ); } public static String format( Calendar calendar, String pattern ) { return format( calendar, pattern, Locale.JAPAN ); } public static String format( Calendar calendar, String pattern, Locale locale ) { DateFormat df = new SimpleDateFormat(pattern, locale ); df.setTimeZone( calendar.getTimeZone() ); return df.format(calendar.getTime()); } } ありがとうございます、HarukaV49さんのコードでうまくいきました。 「getInstanceメソッドによって返される値はint型なので、int型からString型への変換が必要。そこで、Integer.toStringメソッドを用いて型を変更する」といったことを習ったのですが、それを使用しなくても描けるんですね・・・( ゜д゜)

dj-s
質問者

補足

ありがとうございます! HarukaV49さんが書いてくださったコードを参考に、書きなおしてみます!!

回答No.2

「変数 s は何のためにあるのですか?」というより前に、変数 s に何を入れようとしているのですか?とお尋ねしたいです。そもそも「月」って・・・(汗) s = "hour_of_day+月+min+分+sec+秒"; ではなく、せめて s = hour_of_day+"時"+min+"分"+sec+"秒"; ならまだ判るのですが。 数字の0埋めの方法は参考URLなどをご参照ください。

参考URL:
http://mitv2.net/algorithm/padding.html
dj-s
質問者

お礼

すいません寝ぼけていました、"月"ではなく"時"です(>_<) ただ、「s = hour_of_day+"時"+min+"分"+sec+"秒";」と、osu_neko09さんがおっしゃるように書きなおしてみたのですが、やっぱりうまく表示されません(ToT) http://onnsei-okiba.radilog.net/article/477034.html "02時04分34秒"と表示させるには、osu_neko09さんが教えてくださったリンク先によると「一文字づつ連結」「文字列の自己連結」「文字列の自己連結2」「System.arraycopy」という4つの方法があるそうなのですが、具体的なコード例のようなものはないでしょうか? 専門用語が多すぎて、4つの方法をどうコードに反映したらいいのかわからないのです(;_;) いろいろワガママ言ってしまってすいません。 もしosu_neko09さんのお気が向かれましたら、再度ご回答よろしくお願いします<m(__)m>

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

たぶん, 現状で「なぜ求めているように表示できないのか」を考えた方がいいような気はするけど, 変数 s は何のためにあるのですか?

dj-s
質問者

お礼

回答ありがとうございます! 変数sがある理由なのですが、文字列を表示させる「Stringクラス」と呼ばれるものを使用したつもりなのですが・・・間違っているでしょうか!?

関連するQ&A

  • Javaによる現在時刻の表示について

    Javaで現在時刻を表示するプログラムを作りました。 今のままだと 2009/8/26(木) 15:8:7となり、 月日・時間分秒が一桁のときは前に0をつけて二桁(15:08:07のように)表示にしたいと思います。 何かいい方法はないでしょうか? if文で作成するとなると、かなりたくさんのコードを書かないといけない気がします。 良い案があれば是非ご教授頂ければと思います。 import java.util.Calendar; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Servlet_106 extends HttpServlet{ public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException{ res.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = res.getWriter(); String title = "現在時刻:"; Calendar cal = Calendar.getInstance(); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH) + 1; int day = cal.get(Calendar.DATE); StringBuffer dow = new StringBuffer(); switch (cal.get(Calendar.DAY_OF_WEEK)){ case Calendar.SUNDAY: dow.append("日"); break; ~~~(略)~~~ } int hour = cal.get(Calendar.HOUR_OF_DAY); int minute = cal.get(Calendar.MINUTE); int second = cal.get(Calendar.SECOND); out.println("<html lang=\"ja\">"); out.println("<head><title></title></head>"); out.println("<body>"); out.println("<p>現在時刻:" + year + "/" + month + "/" + day + "(" + dow + ")" + hour + ":" + minute + ":" + second + "</p>"); out.println("</body></html>"); out.close(); } }

    • ベストアンサー
    • Java
  • 動きません!!教えて下さい!

    import java.awt.*; import java.awt.event.*; import java.util.*; class test extends Frame implements Runnable { int year=0,month=0,date=0,hour=0,min=0,sec=0; Thread th; Calendar cal=Calendar.getInstance(); public void start() { th = new Thread(this); //時間表示スレッド作成 th.start(); //時間表示スレッド起動 } public void run() { for(int i=0;i<1000;i++) { year=cal.get(Calendar.YEAR); //年 取得 month=cal.get(Calendar.MONTH)+1; //月 取得 date=cal.get(Calendar.DATE); //日 取得 hour=cal.get(Calendar.HOUR_OF_DAY); //時 取得 min=cal.get(Calendar.MINUTE); //分 取得 sec=cal.get(Calendar.SECOND); //秒取得 repaint(); try { Thread.sleep(1000); } catch(InterruptedException e){} } } public static void main(String args[]) { Frame tt=new TimeTable(); } public TimeTable() { setSize(800,600); setVisible(true); //閉じる addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } public void paint(Graphics g) { g.drawString(year + "年" + month + "月" + date + "日",100,100); g.drawString(hour + "時" + min + "分" + sec + "秒",300,100); } } (END) 上のソース(抜粋)なのですが、思い通り動きません…!! リアルタイムに時間を表示するようにしたいのですが… どうしてスレッドは動いてくれないのでしょうか、、、コメントお願いします。

    • ベストアンサー
    • Java
  • Java CDLC 1.0 での日付計算

    CLDC(携帯向けJava)での日付計算がうまくいきません。 JavaのSEでは、Calender.addなる日付計算関数があるようですが、 CLDC(携帯向けJava)では使えないみたいなので、以下の実験コードを 書いてみました。しかし、意図する結果が得られませんでした。 このケースでのよい計算方法をご存知でしたらご教授 頂ければうれしく思います。または、 以下のプログラムのバグ、ポカアホミス、作法的要修正点、 日付計算仕様的な可能/不可能等お気づきありましたら、 ご指摘頂ければ嬉しいです。 尚、意図した結果とは、下記の★部分において、 1970年1月1日(?曜日) 0:1:0 です。 グリニッジ標準時 1970 年 1 月 1 日 0:00:00 (エポック) からの 経過時間が、60000ミリ秒(60秒) というのを期待しました。 --以下コード-- void print_cal(Calendar cal){ String WEEK=" 日月火水木金土"; int year =cal.get(Calendar.YEAR); int month =cal.get(Calendar.MONTH)+1; int day_of_month=cal.get(Calendar.DAY_OF_MONTH); int day_of_week =cal.get(Calendar.DAY_OF_WEEK); int hour =cal.get(Calendar.HOUR_OF_DAY); int minute =cal.get(Calendar.MINUTE); int second =cal.get(Calendar.SECOND); System.out.println("" + year + "/" + month + "/" + day_of_month + "(" + WEEK.charAt(day_of_week) + ") " + hour + ":" + minute + ":" + second); } Calendar cal = Calendar.getInstance(); long now = cal.getTime().getTime(); print_cal(cal); cal.set(Calendar.YEAR, 2007); cal.set(Calendar.MONTH, Calendar.MAY); cal.set(Calendar.DAY_OF_MONTH, 31); cal.set(Calendar.HOUR_OF_DAY, 6); cal.set(Calendar.MINUTE, 12); cal.set(Calendar.SECOND, 44); print_cal(cal); //<---- 2007/5/31(木) 6:12:44 long time1 = cal.getTime().getTime(); cal.set(Calendar.YEAR, 2007); cal.set(Calendar.MONTH, Calendar.MAY); cal.set(Calendar.DAY_OF_MONTH, 31); cal.set(Calendar.HOUR_OF_DAY, 6); cal.set(Calendar.MINUTE, 13); cal.set(Calendar.SECOND, 44); long time2 = cal.getTime().getTime(); print_cal(cal); //<------ 2007/5/31(木) 6:13:44 long sabun = time2 - time1; //<---- 60000 Date hoge = new Date(sabun); long hoge_time = hoge.getTime(); System.out.println(hoge_time); <--- 60000 //setTime: Calendar の現在の時刻を、指定された Date に。 cal.setTime(hoge); //★この時点でprint_cal。 print_cal(cal); <---- 1970/1/1(木) 9:1:0 ?9時間も経ってる? long now2 = cal.getTime().getTime(); System.out.println("now2: " + now2); <--- 60000。でも60秒がはいってるぽい --コード以上--

    • ベストアンサー
    • Java
  • デジタル時計を表示するには?

    いつもお世話になりありがとうございます。 標記の件。 エディターはVS codeを使っております。 コードは下記です。 import java.applet.*; // Applet import java.awt.*; // Graphics, Image, Color, MediaTracker import java.util.*; // Calendar, TimeZone public class DigitalClock extends Applet implements Runnable { Thread thread = null; Image Digit[ ] = new Image[11]; // 画像データ(0~9,:) int DigitWidth, DigitHeight; // 画像データの幅と高さ Image WorkImage; // 作業用イメージ Graphics WorkGraphics; // 作業用グラフィックス int AppletWidth, AppletHeight; // アプレットの幅と高さ // 初期化処理 ----------------------------------------------------------------------- public void init( ) { AppletWidth = getSize( ).width; // アプレットの幅と高さ AppletHeight = getSize( ).height; WorkImage = createImage(AppletWidth, AppletHeight); // 作業用イメージ作成 WorkGraphics = WorkImage.getGraphics( ); // 作業用グラフィックス取得 MediaTracker mediatracker = new MediaTracker(this); // メディアトラッカー生成 for(int i = 0; i < 11; i++) { // 画像データを入力 Digit[i] = getImage(getCodeBase( ), "image/" + i + ".gif"); mediatracker.addImage(Digit[i], 1); // メディアトラッカーに入力画像を設定 } try { mediatracker.waitForID(1); // 画像入力が完了するまで待つ } catch (InterruptedException e) { // waitForIDに対する例外処理 showStatus(" "+e); } DigitWidth = Digit[0].getWidth(this); // 画像サイズ DigitHeight = Digit[0].getHeight(this); } // アプレット開始 ------------------------------------------------------------------- public void start( ) { thread = new Thread(this); // スレッド生成 thread.start( ); // スレッドスタート } // 描画処理 ------------------------------------------------------------------------- public void paint(Graphics g) { g.drawImage(WorkImage, 0, 0, this); // 作業イメージをアプレットに描画 } // スレッド実行 --------------------------------------------------------------------- public void run( ) { while (thread != null) { // スレッドが存在している間 DispTime( ); // 時刻描画 repaint( ); // 再描画 try{ thread.sleep(100); // スリープ } catch(InterruptedException e) { // 他のスレッドの割り込み例外処理 showStatus(" "+e); } } } // 描画更新処理再定義 --------------------------------------------------------------- public void update(Graphics g) { // デフォルトのupdateを再定義 paint(g); // 背景色画面クリア削除,paintのみ } // 時間描画 ------------------------------------------------------------------------- void DispTime( ) { // カレンダーオブジェクト作成 Calendar date = Calendar.getInstance(TimeZone.getTimeZone("JST")); int hour = date.get(Calendar.HOUR); // 現在時刻の時間取得 int minute = date.get(Calendar.MINUTE); // 現在時刻の分取得 int second = date.get(Calendar.SECOND); // 現在時刻の秒取得 // 作業グラフィックに描画 WorkGraphics.setColor(Color.white); WorkGraphics.fillRect(0, 0, DigitWidth*8, DigitHeight); int h1 = hour / 10, // 時間の10の桁 h2 = hour % 10; // 時間の1の桁 WorkGraphics.drawImage(Digit[h1], 0, 0, this); WorkGraphics.drawImage(Digit[h2], DigitWidth*1, 0, this); WorkGraphics.drawImage(Digit[10], DigitWidth*2, 0, this); int m1 = minute / 10, // 分の10の桁 m2 = minute % 10; // 分の1の桁 WorkGraphics.drawImage(Digit[m1], DigitWidth*3, 0, this); WorkGraphics.drawImage(Digit[m2], DigitWidth*4, 0, this); WorkGraphics.drawImage(Digit[10], DigitWidth*5, 0, this); int s1 = second / 10, // 秒の10の桁 s2 = second % 10; // 秒の1の桁 WorkGraphics.drawImage(Digit[s1], DigitWidth*6, 0, this); WorkGraphics.drawImage(Digit[s2], DigitWidth*7, 0, this); } // アプレット停止 ------------------------------------------------------------------- public void stop( ) { thread = null; // スレッドを無効 } } ご回答のほど宜しくお願い申し上げます。

    • ベストアンサー
    • Java
  • GMT時刻を任意のタイムゾーン時刻への変換方法

    Date型のGMT時刻をOSで設定したタイムゾーンに応じたローカル時刻に変換してくれる ことを期待して下記サンプル(SimpleDateFormatにTimeZoneを設定)を作成しました。 しかし、変換前後で時刻は変わりませんでした。 GMT時刻=2010/06/13 09:15:30 を作成。OSのタイムゾーンを日本に設定し、変換。 変換後の時刻は9時間後の2010/06/13 18:15:30を期待したのですが変換前後で変化は ありませんでした。下記がそのサンプルなのですが何か問題がありますでしょうか。 また、サンプルではOSからタイムゾーンを取得しているのですがブラウザのタイムゾーンを 取得することはできるのでしょうか。HTTP request headersにはタイムゾーン情報は無く JavaScriptを経由してとらないといけないという記述をどこかで見たことはあるのですが・・・。 【サンプル】 import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; public class TimeZoneTest { private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); public static void main(String[] args) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 2010); cal.set(Calendar.MONTH, 5); cal.set(Calendar.DAY_OF_MONTH, 13); cal.set(Calendar.HOUR_OF_DAY, 9); cal.set(Calendar.MINUTE, 15); cal.set(Calendar.SECOND, 30); Date todayDate = cal.getTime(); System.out.println("GMT時刻=" + formatter.format(todayDate).toUpperCase()); // GMT時刻=2010/06/13 09:15:30 String convertDate =convertTime(todayDate); // OSのTimeZoneId=Asia/Tokyo にて変換 System.out.println("ローカル時刻=" + convertDate); // ローカル時刻=2010/06/13 09:15:30 何故??? } public static String convertTime(Date todayDate) { String timeZoneId = TimeZone.getDefault().getID(); System.out.println("OSのTimeZoneId=" + timeZoneId); // OSのTimeZoneId=Asia/Tokyo formatter.setTimeZone(TimeZone.getTimeZone(timeZoneId)); return formatter.format(todayDate).toUpperCase(); } }

    • ベストアンサー
    • Java
  • 入力した年月日が過去か現在か未来かを表示するプログラム

    import java.util.*; import java.io.*; import java.text.*; 大事なところだけ抜粋。 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int year = Integer.parseInt(br.readLine()); int month = Integer.parseInt(br.readLine()); int day = Integer.parseInt(br.readLine()); Calendar cal = Calendar.getInstance(); cal.set(year,month-1,day); Calendar today = Calendar.getInstance(); SimpleDateFormat sbf = new SimpleDateFormat("yyMMdd"); Date date1 = cal.getTime(); Date date2 = today.getTime(); String result1 = sbf.format(cal); String result2 = sbf.format(today); 問題はここからです。 入力した年月日が過去か現在か未来か調べるのに<>=は使えないですよね。 どうすればいいのでしょうか。 アドバイス、宜しくお願い致します。

    • ベストアンサー
    • Java
  • Java Applet での虫食い算での質問

    初めて利用させていただきます。 今、課題で虫食い算のプログラムを作成しているのですが、うまく動作してくれません。 もしよろしければご指摘をしてもらえればと思い書き込みのほうをさせていただきます。 import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.Event; import java.awt.Font; import java.awt.Graphics; import java.awt.Panel; import java.applet.Applet; public class musikuizan_1 extends Applet { int A, B; int cnt; int sub(int n,int m) { int i; for (i=1; i<m; i++) n /= 10; return n % 10; } void puzzle() { int a; int b; int c; int d; int e; for (a=1; a<=99; a++) { for (b=1; b<=99; b++) { c = a * (b % 10); d = a * (b / 10); e = a * b; if (c>=100 && c<=999 && d>=10 && d<=99 && e>=100 && e<=999) /*桁数調整*/ { if (sub(b,1)==3 && sub(c,2)==1 && sub(d,2)==8) /*穴埋めされてある部分の数*/ { A = a; B = b; cnt++; } } } } } public void init() { setBackground(new Color(150,180,200)); setLayout(new BorderLayout()); Panel psouth = new Panel(); psouth.add(new Button("実行")); add("South", psouth); } public void paint(Graphics g) { int i, c, d, e; for (i=1; i<=2; i++) { g.drawRect(97-i*20, 5,16,16); g.drawRect(97-i*20,25,16,16); g.drawRect(77-i*20,65,16,16); } for (i=1; i<=3; i++) { g.drawRect(97-i*20,45,16,16); g.drawRect(97-i*20,85,16,16); } for (i=1; i<=4; i++) g.drawLine(30,43,100,43); g.drawLine(30,83,100,83); g.setFont(new Font("Helvetica",Font.BOLD,18)); g.drawString("x",40, 40); if (A == 0) { g.drawString("3",60, 40); g.drawString("1",60, 60); g.drawString("8",60, 80); g.setFont(new Font("Helvetica",Font.PLAIN,12)); g.drawString("cnt = ",30,115); } else { c = A * (B % 10); d = A * (B / 10); e = A * B; g.setFont(new Font("Helvetica",Font.BOLD,18)); for (i=1; i<=2; i++) { g.drawString(Integer.toString(sub(A,i)),100-i*20, 20); g.drawString(Integer.toString(sub(B,i)),100-i*20, 40); } for (i=1; i<=3; i++) { g.drawString(Integer.toString(sub(c,i)),100-i*20, 60); g.drawString(Integer.toString(sub(d,i)), 80-i*20, 80); } for (i=1; i<=4; i++) g.drawString(Integer.toString(sub(e,i)),100-i*20,100); g.setFont(new Font("Helvetica",Font.PLAIN,12)); g.drawString("cnt = "+Integer.toString(cnt),30,115); } } public boolean action(Event e, Object arg) { if ("実行".equals(arg)) { if (A == 0) puzzle(); else A = cnt = 0; repaint(); } return true; } }

    • ベストアンサー
    • Java
  • java コマンドライン引数を利用したカレンダー

    args[0]に例えば200805と入れたら2008年5月のカレンダーが表示される、そんなプログラムを書きたいと思っています。 理想は↓の形です。(_は空欄の意です;) 2008年5月 日 月 火 水 木 金 土 ___________1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 importは使わないよう指示が出ていますので、フルネームでカレンダークラスを記載しています。 public class CalShow { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ java.util.Calendar cal = java.util.Calendar.getInstance(); //コマンドライン引数の前4桁をyear、 int year = Integer.parseInt(args[0].substring(0, 4)); //後ろ2桁をmonthとしてそれぞれintで定義 int month = Integer.parseInt(args[0].substring(4)); System.out.println( year + "年" + month + "月"); System.out.println(" 日 月 火 水 木 金 土"); cal.set(year, month - 1, 1); int startDay = cal.get(java.util.Calendar.DAY_OF_WEEK); cal.add(java.util.Calendar.MONTH, 1); cal.add(java.util.Calendar.DATE, -1); int lastDay = cal.get(java.util.Calendar.DATE);      /*なんとなくここまで書けたのですが、ここからどのように木曜日と1日を繋げていけばよいのか分からなくて困っています。 どういったメソッドを使えばいいのかなど、どなたか教えていただけませんでしょうか? よろしくお願いいたします。*/ } }

    • ベストアンサー
    • Java
  • javaでの時刻更新

    javaの時刻更新について質問です。 jLabel4.setText(year + "/" + month + "/" + day + " " + dow+ " " + hour + ":" + minute ); に入る時刻を1秒間隔で更新したいのですが、どうしたらいいのか分からないのです。 他のサイトでtimerが使えると聞いたので調べてみたのですが、よくわからなくて。。。 プログラムのどこから記述していいのかさっぱりで。 分かる方には馬鹿な質問ですが、よろしければお知恵をお貸しください。 private void tokei() { Calendar cal1 = Calendar.getInstance(); //(1)オブジェクトの生成 int year = cal1.get(Calendar.YEAR); //(2)現在の年を取得 int month = cal1.get(Calendar.MONTH) + 1; //(3)現在の月を取得 int day = cal1.get(Calendar.DATE); //(4)現在の日を取得 int hour = cal1.get(Calendar.HOUR_OF_DAY); //(5)現在の時を取得 int minute = cal1.get(Calendar.MINUTE); //(6)現在の分を取得 StringBuffer dow = new StringBuffer(); switch (cal1.get(Calendar.DAY_OF_WEEK)) { //(8)現在の曜日を取得 case Calendar.SUNDAY: dow.append("日曜日"); break; case Calendar.MONDAY: dow.append("月曜日"); break; case Calendar.TUESDAY: dow.append("火曜日"); break; case Calendar.WEDNESDAY: dow.append("水曜日"); break; case Calendar.THURSDAY: dow.append("木曜日"); break; case Calendar.FRIDAY: dow.append("金曜日"); break; case Calendar.SATURDAY: dow.append("土曜日"); break; } jLabel4.setText(year + "/" + month + "/" + day + " " + dow + " " + hour + ":" + minute ); } }

  • Javaを使用して定時送信をしたい

    Javamailを用いて、プログラムを実行することでメールを送ることには成功しました。 ここからが本題なのですが、 プログラムをループさせたままにして、 Javaで時刻を指定して(何時何分、というように) メールを送信することは出来るのでしょうか。 一日につき5回程送りたいと思っています。 CalenderやDateを使用することも考えたのですが、 上手くループせず定時の送信は出来ませんでした。 ちなみに作ったものがこちらです↓ package mailSend; import java.io.IOException; import java.util.Calendar; import java.util.Date; import javax.mail.MessagingException; import javax.mail.internet.AddressException; public class MailXML { public static void main(String[] args) throws AddressException, MessagingException, IOException{ Calendar cal = Calendar.getInstance(); while(true){ int hournow = cal.get(Calendar.HOUR_OF_DAY); int minnow = cal.get(Calendar.MINUTE); System.out.println(hournow + ":"+ minnow); while(hournow == 1 && minnow == 25 ){ Mail.gatemsg(); Mail.roommsg(); break; } } } } メールの送り先と内容はいつも同じです。 ループする(1回/分)ごとに上手くhournow()とminnnow()が更新されればよいのですが…。 そもそものやり方がおかしいのか、小さな勘違いをしているだけなのかもわかりません。 どなたか解決方法をお願いします。

専門家に質問してみよう