Procsのプロフィール

@Procs Procs
ありがとう数7
質問数0
回答数9
ベストアンサー数
3
ベストアンサー率
60%
お礼率
0%

  • 登録日2015/11/22
  • 性別男性
  • 都道府県埼玉県
  • プログラムコードを書いて実行するとエラーが起きる

    今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 Main{ public static void hanoi(int n, char a, char b, char c){ if(n > 0){ hanoi(n -1, a, c, b); //System.out.println(a + "から" + b + "へ"); hanoi(n -1, c, b, a); } } public static void hanoi2(int n, char a, char b, char c){ if(n >= 1 ){ hanoi(n -1, a, c, b); //System.out.println(a + "から" + b + "へ"); hanoi(n -1, c, b, a); } } public static void main(String[] args){ int count = 0; int count2 = 0; long ns = 0; long n1 = 0; long n2 = 0; while(count2 < 5){ count++; long start = System.nanoTime(); hanoi(3, 'A', 'B', 'C'); long end = System.nanoTime(); long start2 = System.nanoTime(); hanoi2(3, 'A', 'B', 'C'); long end2 = System.nanoTime(); n1 += (end -start); n2 += (end2 -start2); ns = n1 -n2; if(ns > 0) count2++; } System.out.println("「> 」平均:" +(n1 /count)+"ns"); System.out.println("「>=」平均:" +(n2 /count)+"ns"); } }

  • JAVAでの動く波のプログラミング

     Javaのプログラミングに関する質問です。  Javaを勉強中なのですが、sin波を動かす式がどうにも出来ません。以下は私が現状で考えたプログラミングです。 int x1, x2, y1, y2; x2 = getWidth()/5;  y2 = getHeight()/2; for (int i = 1; i <= 90; i++){ x1 = x2; y1 = y2; x2 = x0+(int)(i/30.0*200); y2 =getHeight()/2 -(int)(a*Math.sin(i/30.0*2*Math.PI/T*t)); g.drawLine(x1, y1, x2, y2); }  なんとか独学でこのようなものを考えたのですがまるでダメです。よろしければ止まっている波ではなく動く波のプログラミングの仕方をJavaで教えて頂けると幸いです。

    • 締切済み
    • nobiuu
    • Java
    • 回答数14
  • JAVAでの動く波のプログラミング

     Javaのプログラミングに関する質問です。  Javaを勉強中なのですが、sin波を動かす式がどうにも出来ません。以下は私が現状で考えたプログラミングです。 int x1, x2, y1, y2; x2 = getWidth()/5;  y2 = getHeight()/2; for (int i = 1; i <= 90; i++){ x1 = x2; y1 = y2; x2 = x0+(int)(i/30.0*200); y2 =getHeight()/2 -(int)(a*Math.sin(i/30.0*2*Math.PI/T*t)); g.drawLine(x1, y1, x2, y2); }  なんとか独学でこのようなものを考えたのですがまるでダメです。よろしければ止まっている波ではなく動く波のプログラミングの仕方をJavaで教えて頂けると幸いです。

    • 締切済み
    • nobiuu
    • Java
    • 回答数14
  • JAVAでの動く波のプログラミング

     Javaのプログラミングに関する質問です。  Javaを勉強中なのですが、sin波を動かす式がどうにも出来ません。以下は私が現状で考えたプログラミングです。 int x1, x2, y1, y2; x2 = getWidth()/5;  y2 = getHeight()/2; for (int i = 1; i <= 90; i++){ x1 = x2; y1 = y2; x2 = x0+(int)(i/30.0*200); y2 =getHeight()/2 -(int)(a*Math.sin(i/30.0*2*Math.PI/T*t)); g.drawLine(x1, y1, x2, y2); }  なんとか独学でこのようなものを考えたのですがまるでダメです。よろしければ止まっている波ではなく動く波のプログラミングの仕方をJavaで教えて頂けると幸いです。

    • 締切済み
    • nobiuu
    • Java
    • 回答数14