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

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

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

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

Q&A

解決済

2回答

2701閲覧

Java 日付を解析する機能 配列

jun.pg

総合スコア13

Java

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

0グッド

0クリップ

投稿2017/12/05 03:11

###前提・実現したいこと
配列で打ち込まれた数字を年、月、日に分裂する機能を作りたいです。

###発生している問題・エラーメッセージ
計算部分が上手く反映されず、全部0で返されてしまう

### class DayUtil{ static int year; static int month; static int day; static int getDay(int yyyymmdd){ day = yyyymmdd % 100; return day; } static int getMonth(int yyyymmdd){ month = (yyyymmdd % 10000 - day) /100 ; return month; } static int getYear(int yyyymmdd){ year = (yyyymmdd - month - day) / 10000; return year; } } class DayUtilTest{ public static void main(String[] args){ String birth = args[0]; int yyyymmdd = Integer.parseInt(birth); System.out.print("year = "+ DayUtil.year+",month ="+ DayUtil.month +",day = "+DayUtil.day); } } ```Java

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

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

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

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

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

guest

回答2

0

計算部分が一度も実行されていないため、計算結果を格納するintの変数が初期値のままなのです。

また、計算部分もgetDay()→getMonth()→getYear()の順に実行していかないと計算結果が得られません。

getYear()は計算式がおかしいのでそもそも「正しい計算結果」にならないと思います。

たとえば、

static void init(int yyyymmdd){ year = yyyymmdd / 10000; month = yyyymmdd % 10000 / 100; day = yyyymmdd % 100; }

のように定義しておいて、Testクラスでは

DateUtil.init(yyyymmdd); System.out.print("year = "+ DayUtil.year+",month ="+ DayUtil.month +",day = "+DayUtil.day);

のように呼び出せば正しい計算結果を得ることができると思います。

ただ、このDateUtilクラスは設計としていかがなものかと思いますが。

投稿2017/12/05 03:29

tkturbo

総合スコア5572

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

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

0

ベストアンサー

用意されているメソッドが使われてないですね。
なので、初期値である0が表示されてます。

System.out.print("year = " + DayUtil.getYear(yyyymmdd) + ",month =" + DayUtil.getMonth(yyyymmdd) + ",day = " + DayUtil.getDay(yyyymmdd));

投稿2017/12/05 03:26

編集2017/12/05 03:28
liguofeng29

総合スコア801

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問