• ベストアンサー

うるう年

うるう年を表記するプログラムを組みたいのですがどこがだめなのでしょうか。よろしくお願いします。 public class kadai1 { public static void main(String[] args) { for(long i=1582; i<=2004; i++){ if(i%400==0); System.out.println("i"); else if(i%100==0); System.out.println("i"); else if(i%4==0); System.out.println("i"); } } }

  • Java
  • 回答数4
  • ありがとう数4

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

  • ベストアンサー
  • na_kirajp
  • ベストアンサー率43% (33/76)
回答No.1

ちなみに、 4で割り切れる年はうるう年 100で割り切れる年は、うるう年ではない 400で割り切れる年はうるう年 なので、100で割り切れる年は表示しないではないですか?

sss333
質問者

お礼

ありがとうございます。なんとかできました。

その他の回答 (3)

  • nuki
  • ベストアンサー率30% (6/20)
回答No.4

ソースのコピーミスかもしれませんが、 ifとelse ifの行の末尾に;(セミコロン)が付いてます。 これではコンパイルも通らない気がするのですが...。 ちなみに、ifやelse ifの末尾に;があると、ifの 条件が成立した場合に実行される内容が無い、 ということを意味しています。 また、javaでは{}(ブレース)で括らないと複数行を 指定できなかったと思いますので、else ifの行で ifの無いelseが存在することになり、コンパイル エラーとなると思います。

sss333
質問者

お礼

ありがとうございます。

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.3

if文の真偽がすべて空文になっていますよ。 これでは、その次に記述してあるSystem.out.println()関数はif文の外にあることになってしまい、if文の真偽にかかわらず出力してしますね。 そうすると、else if文とか文法上おかしな点が出てきます。 次に、System.out.println("i");ではfor文のiが出力されるのでは無く、iという文字が出力されるだけで、何年が閏年なのかにはなりません。 そもそも閏年の計算方法も、このままではうまくいきません。 課題のようですので、サンプルプログラムは書きません。 がんばれー!

sss333
質問者

お礼

ありがとうございます。 言われるとうり課題です。 なんとかできました。

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.2

「400で割り切れず、100で割り切れる」場合はうるう年ではないです。 頑張ってくださいヽ(^。^)ノ

sss333
質問者

お礼

ありがとうございます。 おかげさまでなんとかできました。

関連するQ&A

  • Javaプログラムの間違いを見つけてください

    下記のプログラムをマニュアル通りに入力したのですが、おそらくマニュアルにミスがあったのでしょう。どこが間違っているのか教えてください。よろしくお願いしますm_ _m class kadai1710 { public static void main (String args []) { System.out.println(args[0]); if(Integer.parselnt(args[0]) == 1) System.out.println("男性"); else System.out.println("女性"); } }

    • ベストアンサー
    • Java
  • intではなくStringで・・・

    こんなソースがあります。。 public class Check { public static void main(String[] args) { int i = Integer.parseInt(args[0]); if (i == 123) { System.out.println("あたり!"); } else if (i < 123) { System.out.println("はずれ!"); } else { System.out.println("おおはずれ!"); } } } これを、int型の文字を入力して判定させるのではなく、String型の文字で判定させたいのですが、 int i = Integer.parseInt(args[0]);をどう変えればいけるでしょうか? よろしくお願いします!

    • ベストアンサー
    • Java
  • 配列を使った・・・。

    配列を使って簡単な迷路を作っているのですが、なかなかうまくいきません。 0を" "1を"■"を表示させたいのですがうまくいきません。 何処を直せばいいのか教えてください。 public class Sample1 { public static void main (String[]args) { int [][] data = { {1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1}, {1,0,1,1,0,0,0,1,1,1,0,1,1,1,1,1,0,1,1,1}, {1,0,0,0,0,1,0,0,0,1,0,0,0,1,1,1,0,1,1,1}, {1,1,1,1,1,1,1,1,0,1,0,1,0,1,1,0,0,1,1,1}, {1,1,1,1,1,0,0,0,0,1,0,1,0,0,0,0,1,1,1,1}, {1,1,1,1,1,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1}, {1,1,1,1,0,0,1,1,0,1,0,1,1,1,0,1,1,1,1,1}, {1,1,1,1,0,1,1,1,1,1,0,1,1,1,0,0,0,1,1,1}, {1,1,1,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1}, {1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} }; for (int i=0; i<10; i++) { for (int j=0; j<20; j++) { System.out.print(data [i][j]); } if(data [i][j] = 1){ System.out.println("■"); }else{ System.out.println(" "); } } } }

    • ベストアンサー
    • Java
  • プログラムコードを書いて実行するとエラーが起きる

    今JAVAのプログラムの勉強(初心者)をしているのですが、とある参考書のプログラムコードを書いて実行すると Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at rensyu7.pkg1.Rensyu71.main(Rensyu71.java:18) Java Result: 1 というエラーが起きておりどこがエラーなのかコードを眺めてみたのですがよくわかりません。 クラス: Rensyu71 package rensyu7.pkg1; import java.lang.reflect.*; public class Rensyu71 { /////////////////////////////////////////////////////////////////////////////// // mainメソッド ////////////////////////////////////////////////////////////////////////////// public static void main (String[] args) { String FQCN = args[0]; String hairetu = args[1]; try { Class<?>class1 = Class.forName (FQCN); listMethods (class1); //listMethodsの呼び出し if (hairetu.equals ("E")) { launchInternal (class1); //launchInternalメソッドの呼び出し }else if(hairetu.equals ("I")){ launchInternal (class1); //launchInternalメソッドの呼び出し }else{ throw new IllegalArgumentException ("起動方法が不正です"); } } catch (Exception e) { System.out.println (e.getMessage ()); e.printStackTrace (); System.exit (1); } showmemory (); //showmemoryの呼び出し System.exit (0); } /////////////////////////////////////////////////////////////////////////// // listMethodsメソッド //////////////////////////////////////////////////////////////////////////// public static void listMethods(Class<?>class1){ System.out.println ("メソッド一覧を表示します"); Method[]hairetu2 = class1.getDeclaredMethods (); for (Method m : hairetu2) { System.out.println (m.getName ()); } } //////////////////////////////////////////////////////////////////////////// // launchExternalメソッド //////////////////////////////////////////////////////////////////////////// public static void launchexternal(Class<?>class1) throws Exception{ ProcessBuilder PB = new ProcessBuilder ("java",class1.getName ()); Process process = PB.start (); process.waitFor (); } //////////////////////////////////////////////////////////////////////////// /// launchInternalメソッド //////////////////////////////////////////////////////////////////////////// public static void launchInternal(Class<?>class1)throws Exception{ Method m = class1.getMethod ("main", String[].class); String[] args = {}; m.invoke (null, (Object)args); // } //////////////////////////////////////////////////////////////////////////////// // shoememoryメソッド /////////////////////////////////////////////////////////////////////////////// public static void showmemory(){ long free = Runtime.getRuntime ().freeMemory (); long total = Runtime.getRuntime ().totalMemory (); long memorisiyouryou = (total-free)/1024/1024; System.out.println ("現在のメモリの使用量:"+memorisiyouryou+"MB"); } } ============================================================================ クラス:MemoryEater package rensyu7.pkg1; public class MemoryEater { public static void main (String[] args) { System.out.println ("eating memory・・・・・・・"); long[] larry = new long[128000]; for (int i = 0; i <larry.length; i++) { larry[i]=i; } } } 滅茶苦茶なプログラムですが、初心者ですので大目にみてください。 どこを直せば実行できますか?どなたかご教授願います。

    • ベストアンサー
    • Java
  • どこが違うのでしょうか?

    これも実行できません。 どうぞ、間違いを指摘してください。 public class Sample6_1 { public static void main(String[] args) { int probabilityOfRain = 20; if (30 <=probabilityOfRain) { System.out.println("傘を持っていく"); } if (probabilityOfRain < 30) { System.out.println("傘を持って行かない"); } }

    • ベストアンサー
    • Java
  • dokojavaでシンボルerrorがでます。

    -------------------------------------isbn978-4-8443-3638-9 public class Main { public static void main(String[] args){ System.out.println("運勢"); int fortune = new java.util.Random() .nextInt(4) + l; if (fortune == 1) { System.out.println("大吉"); } else if (fortune == 2){ System.out.println("中吉"); } else if (fortune == 3){ System.out.println("吉"); } else{System.out.println("凶"); } } } ----------------------------------- int fortune = new java.util.Random() .nextInt(4) + l; ↑の最後の「l;」がみつかりませんとシンボルerrorになります。

  • シンボルを解決できません・・・?

    Java初心者です。 public class mondai5 { public static void main(String args[]) { String str = "abc"; if( str != null && str.index0f('a') != -1) { System.out.println("OK"); } else { System.out.println("BAD"); } } } これをコンパイルをしようとすると、このような表示が出ます。 シンボルを解決できません。 シンボル:メソッドindexOf(char) 場所:java.long.Stringのクラス   if( str != null && str.indexof('a') != -1)              ^ なにをしたらいいのかわかりません。 教えてください。

    • ベストアンサー
    • Java
  • java 乱数

    class Randm3 { public static void main(String[] args) { int inum = (int)(Math.random()*2); if (inum == 1){ System.out.println(“吉”); } else{ System.out.println(“凶”); } } } を改編して‘大吉’と‘吉’と‘凶’をそれぞれ0.1と0.6と0.3の確率で表示する javaプログラムを作成してください。

  • 昇進者です。 戻り値の学習をしていますが。

    *を10個表示するプログラムですが。 public class Graph1 { public static void main(String[] args) { printGraph(10); } public static void PrintGraph(int x) for(int i = 0; i < x; i++){ System.out.println("*"); } System.out.println(""); } } のprintGraph(10);は何のためにあるのですか? 10がxに代入されていますよね。戻り値はxですか。

  • JAVAコンストラクタについて

    JAVA のコンストラクタ定義の際に、下記のようにコンストラクタにvoidを付けた時と付けない時の処理結果が変わるのはなぜでしょうか。 (1) class O { protected int d; O(){ System.out.println("O = " + d); } } class Study_6_3main_void { public static void main(String args[]) { int i = 1; O OO = new O(); System.out.println("O = "); } } (2) class O { protected int d; void O(){ System.out.println("O = " + d); } } class Study_6_3main_void { public static void main(String args[]) { int i = 1; O OO = new O(); System.out.println("O = "); } } 実行結果 (1) O = 0 O = (2) O = 以上です。回答の程よろしくおねがいします。

    • ベストアンサー
    • Java

専門家に質問してみよう