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

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

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

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

Q&A

解決済

4回答

1491閲覧

java 型変換

chiba000

総合スコア13

Java

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

0グッド

0クリップ

投稿2016/04/14 08:49

Calendar cal = Calendar.getInstance();

cal.add(Calendar.YEAR,-textcalk); SimpleDateFormat cal = new SimpleDateFormat("yyyy年"); String Cal = Integer.toString(cal);

上記プログラムで今年の年(2016)からtextcalk(例えば3)を引いた結果を返したいのですが、
型変換がうまくいきません。

どなたか教えていただけませんか?よろしくお願いします。

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

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

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

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

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

abs123

2016/04/14 09:01

多分コンパイルすら通っていないコードと言うことだと思いますが、そういった旨もしっかり記述したほうが良いです。
chiba000

2016/04/14 13:56

次回以降気を付けます。
guest

回答4

0

ベストアンサー

java

1Calendar cal = Calendar.getInstance();

java

1SimpleDateFormat cal = new SimpleDateFormat("yyyy年");

なんで同じ変数名で宣言してるのかと小一時間(ry

@see SimpleDateFormat (Java Platform SE 6)

ちゃんとした説明は上のリンク先で確認のこと。
ようするに「SimpleDateFormat」の使い方が間違ってるのです。
「cal」がCalendarインスタンスだとすると、

java

1String yearString = new SimpleDateFormat("yyyy").format(cal.getTime());

などとするのが正解。

投稿2016/04/14 08:56

編集2016/04/14 09:07
tkturbo

総合スコア5572

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

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

chiba000

2016/04/14 14:00

getTime()が必要な理由が調べてもでてきません・・・ もしよければ、教えていただけますか?
tkturbo

2016/04/14 14:06

format()の引数はDate型。 Calendar型の変数のDate型としての値を取得するのにgetTime()が必要。 クラスやデータ型についての基本的な知識が足りてない気がします。
chiba000

2016/04/15 01:02

なるほど・・・見直してみます。 ありがとうございました!
guest

0

慣れないうちは実行したいことを行コメントで書けるようになるのも、ひとつの道でしょうか。

java

1 public void test() { 2 int textcalc = 3; 3 4 // 現在時刻のCalendarインスタンスを取得する 5 Calendar cal = Calendar.getInstance(); 6 7 // textcalcの値の数だけ年数を引く 8 cal.add(Calendar.YEAR, -textcalc); 9 10 // CalendarをDateFormatに渡して、日付フォーマットに合わせた文字列を取得する 11 SimpleDateFormat format = new SimpleDateFormat("yyyy年"); 12 String result = format.format(cal.getTime()); 13 14 // 標準出力する 15 System.out.println(result); 16}

投稿2016/04/14 10:21

A-pZ

総合スコア12011

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

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

chiba000

2016/04/14 13:56

ありがとうございます。今後はしてみようと思います。
guest

0

直接的な回答ではないのですが、
java.util.Calendar は現在のJavaでは使用しない負の遺産ですので、使うのはやめましょうね。
ご利用のJDKのバージョンが1.7以前であればやむを得ませんが。

java

1LocalDate localDate = LocalDate.now().minusYears(3); 2String year = localDate.format(DateTimeFormatter.ofPattern("u年")); 3System.out.println(year); // 2013年

投稿2016/04/14 09:45

編集2016/04/14 09:45
root_jp

総合スコア4666

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

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

KiyoshiMotoki

2016/04/14 10:37

お手数ですが、 > java.util.Calendar は現在のJavaでは使用しない負の遺産ですので、使うのはやめましょうね。 の根拠を示していただけますでしょうか?
KiyoshiMotoki

2016/04/14 15:01

ありがとうございます。 勉強させていただきました。
guest

0

年だけ引き算したいなら、別にCalendarのままやらなくてもいいのでは。

java

1int year = Calendar.getInstance().get(Calendar.YEAR) - textCalc; 2System.out.println(year + "年");

投稿2016/04/14 15:22

swordone

総合スコア20649

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問