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

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

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

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

Q&A

解決済

1回答

1575閲覧

Calendar.getInstanceに関する質問

KasperHekmatyar

総合スコア81

Java

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

0グッド

0クリップ

投稿2017/06/06 02:37

###発生している問題・エラーメッセージ

ソースコードの

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日");

の部分を切り取って別のファイルでvoid型のクラスの中に入れると

time_watch.setText(sdf.format(c.getTime()));の

sdfとcが解決できませんというエラーが出ます。

①私のイメージではそのクラス(Date_util)をnew生成したので、その中の変数

もそのまま使えると思ったのですが、なぜ使えないのかが分からないです。

②私のイメージではクラス(Date_util)をvoidでも大丈夫だと思ったのですが、

見た本の解答を見るともう1つのクラスで作る場合は

java

1 2public static String getDate_yyyymmdd(){ 3 4 //現在日時を取得する 5 Calendar c = Calendar.getInstance(); 6 //フォーマット 7 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月dd日(E)"); 8 9 System.out.println(sdf.format(c.getTime())); 10 11 return sdf.format(c.getTime()); 12 13 //フォーマットパターン指定 14 // 15 // 16 17 } 18 public static void main(String[] args) { 19 // TODO 自動生成されたメソッド・スタブ 20 21 DateUtil.getDate_yyyymmdd(); 22 23 24} 25

となり、返り値が必要とするらしいのですが、なぜvoidではだめなのでしょうか?

エラーメッセージ

###該当のソースコード

java

1 JLabel time_watch = new JLabel(""); 2 time_watch.setBounds(402, 10, 103, 13); 3 frame.getContentPane().add(time_watch); 4 Date_util date_util = new Date_util(); 5 Calendar c = Calendar.getInstance(); 6 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日"); 7 8 time_watch.setText(sdf.format(c.getTime()));

###試したこと
課題に対してアプローチしたことを記載してください

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

yona

2017/06/06 02:49

「void型のクラスの中に入れると」とはどのような意味ですか?
KasperHekmatyar

2017/06/06 02:56

public static String getDate_yyyymmdd()ではなくpublic static void getDate_yyyymmdd()ということです。
guest

回答1

0

ベストアンサー

仮定1:cとsdfはDate_utilのフィールド変数またはクラス変数として定義されている。
Date_utilインスタンス.cやDate_utilインスタンス.sdfまたはDate_util.cやDate_util.sdfとしてクラス変数・フィールド変数にアクセスする必要があります。

仮定2:cとsdfはDate_utilのメソッドの中に定義されている。
この場合、他のクラスからアクセスする事はできません。

変数のスコープについて勉強しましょう。

投稿2017/06/06 02:54

編集2017/06/06 02:56
yona

総合スコア18155

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

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

KasperHekmatyar

2017/06/06 03:00

void main 中で定義しました。それを別のJAVAファイルでクラスをnewしてcとsdfにアクセスしようしています。その場合だと仮定2でしょうか
yona

2017/06/06 03:02

そうですね。 そうするとmainメソッド内から他クラスのメソッド内にあるローカル変数cとsdfにアクセスする事はできません。 メソッドの戻り値の型をvoidにする理由はなんですか?
KasperHekmatyar

2017/06/06 03:11

変数のスコープについて理解出来ていないので、アクセスできる出来ないことがあるのを知りませんでした。勉強してきます。voidにした理由ですが、戻り値が無くても変数c,sdfにはすでに欲しい値が入っているので、別のクラスでそのまま呼び出せば良いのでわざわざ戻り値なくても同じことが実現できると考えているからです。
yona

2017/06/06 03:16

スコープについて理解すると誤っていることがわかるので、まずはスコープについて調べましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問