• ベストアンサー

プログラムで

aloopの回答

  • aloop
  • ベストアンサー率23% (10/43)
回答No.1

何がどうわからないのか私には判断しかねるのですが、 このtryブロック中で起こり得るのは、変数iが配列のインデクスより大きいことで起こる例外  「 ArrayIndexOutOfBoundsException 」 ですね。

mos21
質問者

お礼

ありがとうございましたー。

関連するQ&A

  • 意味がわかりません

    for(int i=0; i < w*h ; i++){ try{ int r = (int)(pixels[i]&0x00ff0000); if (r!=0x00000000){r = ((int)((pixels[i]&0x00ff0000)*90/100)&0x00ff0000);} int g = (int)(pixels[i]&0x0000ff00); if (g!=0x00000000){g = ((int)((pixels[i]&0x0000ff00)*90/100)&0x0000ff00);} int b = (int)(pixels[i]&0x000000ff); if (b!=0x00000000){b = ((int)((pixels[i]&0x000000ff)*90/100)&0x000000ff);} if((((w+i)/w)%2)!=0){epixels[i] = 0xff000000| r | g | b ;uepixels[i]=pixels[i];} else {epixels[i] = pixels[i];uepixels[i] = 0xff000000| r | g | b ;} }catch(Exception ex){;} } このようなプログラムがあるのですが、何をしているのかがわかりません。 見づらいかもしれませんがどなたかわかる方よろしくお願いします。

  • プログラムについて

    javaを使って静止画像にラインをつけて、その奇数ライン画像(偶数ラインは輝度が下がっている画像)と偶数ライン画像(奇数ラインは輝度が下がっている画像)の2枚の画像を1/100秒間隔で交互に表示させ、実際に見ているぶんには普通の静止画像が表示されているというプログラムを作りました。この輝度が下がっているところは奇数ラインと偶数ラインのように決まっているのですが、これを輝度が下がっているところがランダムになるようにとりたいのですがどうるればよいかわかりません... わかる方いましたら何かアドバイスなどお願いします。m(_ _)m for(int i=0; i < w*h ; i++){ try{ int r = (int)(pixels[i]&0x00ff0000); if (r!=0x00000000){r = ((int)((pixels[i]&0x00ff0000)*90/100)&0x00ff0000);} int g = (int)(pixels[i]&0x0000ff00); if (g!=0x00000000){g = ((int)((pixels[i]&0x0000ff00)*90/100)&0x0000ff00);} int b = (int)(pixels[i]&0x000000ff); if (b!=0x00000000){b = ((int)((pixels[i]&0x000000ff)*90/100)&0x000000ff);} if((((w+i)/w)%2)!=0){epixels[i] = 0xff000000| r | g | b ;uepixels[i]=pixels[i];} else {epixels[i] = pixels[i];uepixels[i] = 0xff000000| r | g | b ;} }catch(Exception ex){;} } これがそのプログラムの、交互に表示している場所だと思うのですが。

    • ベストアンサー
    • Java
  • プログラムで

    以前も似たような質問をしたのですが、いろいろとやってみたのですがわからなくてまた質問しました。現在、次のようなプログラムを書いています。 int w = img.getWidth(this); int h = img.getHeight(this); int[] pixels = new int[w * h]; int[] epixels = new int[w * h]; int[] uepixels = new int[w * h]; int scan = w; int offset = 0; PixelGrabber pg = new PixelGrabber(img,0,0,w,h,pixels,0,scan); try{pg.grabPixels(); } catch(InterruptedException e){;} for(int i=0; i < w*h ; i++){ int r = (int)(pixels[i]&0x00ff0000); if (r!=0x00000000){r = ((int)((pixels[i]&0x00ff0000)*0.5)&0x00ff0000);} int g = (int)(pixels[i]&0x0000ff00); if (g!=0x00000000){g = ((int)((pixels[i]&0x0000ff00)*0.5)&0x0000ff00);} int b = (int)(pixels[i]&0x000000ff); if (b!=0x00000000){b = ((int)((pixels[i]&0x000000ff)*0.5)&0x000000ff);} if((ra.nextInt()%2)!=0) { epixels[i] = 0xff000000| r | g | b ; uepixels[i]=pixels[i]; } else { epixels[i] = pixels[i]; uepixels[i] = 0xff000000| r | g | b ; } (Exception ex){;} } しかし、これですとiが1進む毎にランダムに真または偽をとってしまうため、実際に動かしてみた所「砂嵐」のように画像が表示されました。このランダムにとるのを、1ライン目はそのままの明るさで2ライン目は明るさ半減していて3ライン目も明るさ半減していて・・・といった感じにライン毎にランダムに「そのままの明るさのライン」か「明るさが半減しているライン」かをとるように改良するにはどうしたらいいでしょうか?お願いします。

    • ベストアンサー
    • Java
  • int型について

    1枚の静止画像の明るさを、1行おきにではなくてランダムに、元の色使いのままの行と、明るさを半減した行を持つという画像を2枚作成したいのですが、次のプログラムの記述ではif((r.nextInt()%2)!=0){の部分でintは間接参照できません。というエラーが出てしまいました。なぜでしょうか?わかる方いましたらお願いします。 先に記述してあるプログラムを後で記述したプログラムに改良したところエラーが起こってしまいました。 こちらが改良前で if((((w+i)/w)%2)!=0){ epixels[i] = 0xff000000| r | g | b ; uepixels[i]=pixels[i];} else {    epixels[i] = pixels[i];uepixels[i] =  0xff000000| r | g | b ;} こちらが改良後です。 if((r.nextInt()%2)!=0){ epixels[i] = 0xff000000|r|g|b; uepixels[i] = pixels[i]; } else{ epixels[i] = pixels[i]; uepixels[i] = 0xff000000|r|g|b; }

    • ベストアンサー
    • Java
  • 質問です。

    1枚の静止画像を、1行おきに、元の色使いのままの行と、明るさ半減した行を合成するというプログラムなのですが。偶数行を半減させるか、奇数行を半減させるかではなくてランダムに行を半減させるにはどうすればよいのでしょうか?RandomクラスやMathクラスを使用すればよいでしょうか? if((((w+i)/w)%2)!=0){  epixels[i] = 0xff000000| r | g | b ;  uepixels[i]=pixels[i]; } else {  epixels[i] = pixels[i];  uepixels[i] = 0xff000000| r | g | b ; }

    • ベストアンサー
    • Java
  • 意味がわかりません

    javaのプログラムでこのようなものがあったのですがよくわかりません、解説をお願いします。配列変数pixelsのi番目の値の何をr,g,bに入れているのかがよくわかりません。わかる方いましたら、お願いします。 for(int i=0; i < w*h ; i++) { try { int r = (int)(pixels[i]&0x00ff0000); if (r!=0x00000000) { r = ((int)((pixels[i]&0x00ff0000)*0.5)&0x00ff0000); } int g = (int)(pixels[i]&0x0000ff00); if (g!=0x00000000) { g = ((int)((pixels[i]&0x0000ff00)*0.5)&0x0000ff00); } int b = (int)(pixels[i]&0x000000ff); if (b!=0x00000000) { b = ((int)((pixels[i]&0x000000ff)*0.5)&0x000000ff); }

    • ベストアンサー
    • Java
  • 意味がわかりません

    このようなプログラムがあるのですが少し意味がわからなくて困っています。わかる方解説などお願いしますm(_ _)m try{mt.waitForAll(); } catch( InterruptedException e ) { } int w = img.getWidth(this); int h = img.getHeight(this); int[] pixels = new int[w * h]; int[] epixels = new int[w * h]; int[] uepixels = new int[w * h]; int scan = w; int offset = 0; PixelGrabber pg = new PixelGrabber(img,0,0,w,h,pixels,0,scan); try{pg.grabPixels(); } catch(InterruptedException e) { ; }

    • ベストアンサー
    • Java
  • ピクセル情報について

    画像を読み込んでピクセル情報を取得して、 R.G.B値を操作しようとして次の様にプログラムを組みました。 (抜粋ですみません) pg = new PixelGrabber(img1,0,0,width,height,pixel,0,width); try { pg.grabPixels(); System.out.println("pg ok"); //デバッグ表示用 } catch(InterruptedException e) { System.out.println(e); } for(int i=0; i<width*height; i++) { int pix = pixel[i]; int red = 0xff & (pix >> 16); int green = 0xff & (pix >> 8); int blue = 0xff & pix; red += uppoint; green += uppoint; blue += uppoint; pixel[i] = (0xff000000 | red<<16 | green<<8 | blue); } 旨く動けばR.G.B値にuppoint分の数値が足されるはずなんですが、エラーがでてしまいます。 何処が悪いのか判らなくて困っています。 どなたか教えていただけないでしょうか?

  • 数字を動くプログラムについて

    番組の最後に流れるスタッフロールのように 数字が左から右に動くプログラムを以下のようなかんじで作りました。 class MyDrawPanel extends JPanel{ public void paintComponent(Graphics g){ g.setColor(Color.WHITE); g.fillRect(0,0,this.getWidth(),this.getHeight()); g.setColor(Color.BLACK); g.setFont(font); g.drawString("12345",x,y); } } というコンポーネントを x=-200; for(int i=0;i<500;i++){ x++; drawPanel.repaint(); try{ Thread.sleep(1); }catch(Exception ex){ } }というふうに動かしました。 ふたつ質問があります。 1.異なるスペックのパソコンで実行してみたところ表示(動く)スピードに大きな差が出ました。  これはしょうがないことなのでしょうか?(解決する方法があるのでしょうか?) 2.インクリメントをする際にThread.sleepで1msec休止させていますが   これをもっと短くすることはできないのでしょうか?   動くスピードが遅いのでもう少し速くしたいです。  (xのインクリメントをx+=2でやってみましたがこれくらいしか方法はないのでしょうか?)

    • ベストアンサー
    • Java
  • [JAVA]try 内の変数を外で!?

    お世話になります! try{ int rsCount = ... ... }catch(Exception e){ ... } out.println(rsCount); とした場合、初期化されていない可能性があるとかで使えません。 try catch 内で定義したものは使えないのですか?? 反対に、どうすれば解決できますか?

    • ベストアンサー
    • Java