プロが教える店舗&オフィスのセキュリティ対策術

72を入力して、3月13日を出力するプログラムがうまくいきませんどうすればいいですか。この課題は明日が締め切りです

A 回答 (6件)

for文 や if文 は必要ないプログラムです。

それらを用いてコーディングしたい場合は、他の方が提案されているアルゴリズムでコーディングされた方がいいと思います。

ちなみに基準日と加算日数を自由に変更できるようにする場合は、次になると思います。


import java.util.Calendar;

public class ReturnDate {

/**
* @param args
*/
public static void main(String[] args) {

String strDateOfStart =
getStringFromSystemIn("Enter the Date of Start. Format(9999/99/99) > ");
String strNumberOfDateForAdd =
getStringFromSystemIn("Enter the Number of Date for add. Format(99) > ");

Calendar objStartDate = Calendar.getInstance() ;
objStartDate.set(
(new Integer(strDateOfStart.substring(0, 4))).intValue(),
(new Integer(strDateOfStart.substring(5, 7))).intValue(),
(new Integer(strDateOfStart.substring(8, 10))).intValue());
objStartDate.add(Calendar.DATE,-1);
objStartDate.add(Calendar.DATE,
(new Integer(strNumberOfDateForAdd.trim())).intValue());
System.out.println(
objStartDate.get(Calendar.YEAR)+"年"+
objStartDate.get(Calendar.MONTH)+"月"+
objStartDate.get(Calendar.DATE)+"日");

}

private static String getStringFromSystemIn(String strMassage){

System.out.print(strMassage);
int intLength = 0;
byte bytBuffer[] = new byte[256];
try{
intLength = System.in.read(bytBuffer);
}catch(Exception ex){
System.out.println(ex);
}
return new String(bytBuffer,0,intLength);

}

}

英語の部分が間違っていたらすみません。なんとなく書いたので正しいかどうかはご自分で確かめてください。
    • good
    • 0

こういう計算には公式があります。


3月1日を起点として14月まである設定とすると
3月~13月までは31日、30日と同じ繰り返しで進みます。
これを逆に利用すれば比較的簡単に日数から月日を引き出すことができます。

参考URL:http://cl.is.kyushu-u.ac.jp/Literacy/PP/H14/adp/ …
    • good
    • 0

den256 と申します。



私なりの答えを考えてみました。

import java.util.Calendar;

public class ReturnDate {

/**
* @param args
*/
public static void main(String[] args) {

Calendar objStartDate = Calendar.getInstance() ;
objStartDate.set(2007,1,1);
objStartDate.add(Calendar.DATE, 72);
System.out.println(
objStartDate.get(Calendar.YEAR)+"年"+
objStartDate.get(Calendar.MONTH)+"月"+
objStartDate.get(Calendar.DATE)+"日");

}

}

結果は、
2007年3月14日

です。

これだとうるう年も対応してくれるようです。
それと計算の設定日の翌日から 72 日目を返すみたいですね。

それに対応する場合は、
objStartDate.set(2007,1,1);
objStartDate.add(Calendar.DATE, -1);
objStartDate.add(Calendar.DATE, 72);

でいいかもしれないです。

Java の Calendar クラスを使うよりも自分でアルゴリズムを考えたほうが勉強になるかも知れないですね。

この回答への補足

このプログラムでfor文やif文やwhile文ではどういう風になりますか

補足日時:2007/01/29 14:51
    • good
    • 0
この回答へのお礼

ありがとうございます。早速試してみます

お礼日時:2007/01/29 14:49

1.入力した値を取得するところがわからない


2.入力した値を数値に変換するところがわからない
3.java.util.GregorianCalendarって何?
4.APIって何?
5.ifって何?
6.javaって何?
7.プログラムって何?
8.そもそも日本語がわからない。
1~8のどれでしょうか。
6以降だと「詰み」ですが…
    • good
    • 0

分かりやすいやりかただと、入力をaとして



if(a=1~31)   1月a日 と出力。
if(a=32~60) 2月a-31日
if(a=61~92) 3月a-61日



if(a=334~365) 12月a-334日
とすればいいと思います。

この回答への補足

すみません、このプログラム作成に当たって全体がよくわからないです。

補足日時:2007/01/29 13:07
    • good
    • 0

わかるところまで作って課題を出す。


できた友人に見せてもらって課題を出す。
先生(課題を出した人)に聞く。

ここで聞くなら、「何がどうわからない。」「こうしたけどこうなった。」などを書かないとダメですよ。

ひょっとしたら
java.util.GregorianCalendarクラスのAPI
を熟読すると幸せになれるかもしれません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!