• 締切済み

Javaのコピープログラムについて

int1次元配列hoge{0,1,2,3,4,5,6,7,8,9,10}を奇数と偶数にわけて、それぞれを順にコピーする。 プログラムを作りたいのですが、奇数と偶数に分けるまではわかるのですがそれをコピーするのがわからないためご教授お願いします。

みんなの回答

  • DiveKo
  • ベストアンサー率70% (7/10)
回答No.2

arraycopy()を使って、↓な感じでやってみては? ++++++++++++++++++++++++++++++++++++++++++ public class sampleDemo { public static void main(String[] args) { int[] hoge = {0,1,2,3,4,5,6,7,8,9,10}; int[] even = new int[6]; int[] odd = new int[5]; for (int i = 0, j = 0, k = 0; i < hoge.length; i++) { if (hoge[i] % 2 == 0) { even[j] = hoge[i]; j++; } else { odd[k] = hoge[i]; k++; } } for (int i = 0; i < hoge.length; i++) { System.out.println("Before : " + hoge[i]); } System.arraycopy(even, 0, hoge, 0, even.length); System.arraycopy(odd, 0, hoge, even.length, odd.length); for (int i = 0; i < hoge.length; i++) { System.out.println("After : " + hoge[i]); } } } ++++++++++++++++++++++++++++++++++++++++++

210130
質問者

お礼

回答ありがとうございます。 参考になりました。 返事が遅くなったことをお詫びします。

全文を見る
すると、全ての回答が全文表示されます。
  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.1

>コピーするのがわからない 「コピーする」と一言で片付けてしまって ・何処に ・どうやって が抜けている為に分からなくなっているのではないでしょうか? ・奇数を何処にコピーするのか ・偶数を何処にコピーするのか ・どうやってコピーするのか(コピーとは何か?) を書き出してみれば案外簡単に解決するのでは。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C言語のプログラムについて。

    #include <stdio.h> int main(void) {   int hoge,piyo;   printf("数値を入力せよ。:");   scanf("%d",&hoge);   piyo = hoge % 2;   if (piyo == 0) {     printf("%dは、偶数。\n",hoge);   } else {     printf("%dは、奇数。\n",hoge);   };   return 0; } という、プログラムが、実行できません。 といって、エラーメッセージがでてくれないので、困っています。 ひょっとして、非常に初歩的なミスという気もするのですが。 これはよかった!という、C言語に関する書籍、また、コンピュータのシステムに関する書籍がありましたら、合わせてご教授ください。

  • javaプログラムの質問です

    1 3 5 7 9 11 13 15 17 19 21 23 のように10個ずつ改行し99までの奇数を表せるプログラムをお願いします。 できれば同じように100までの偶数を表示できるプログラムもお願いします。 for文を使ってお願いします。

    • ベストアンサー
    • Java
  • Javaで教えていただけける方お願いします

    int型2次元配列 a行b列をb行a列の2次元配列に変換するプログラムを 作りたいのですが、うまく変換した表示が出来ません。 123  ⇒ 14 456    25        36 できるかたお願いします。

  • Javaのプログラムで・・・

    Javaのプログラムで1~20までの整数乱数を実行後に指定回数だけ発生させ、そのうち何%が奇数であったかを表示するプログラムを作成中です。 乱数を発生させるところまでは行ったのですがここからどのように計算していくのかわかりません。 以下が作成したものですがアドバイスお願いします。 import java.io.*; public class Rand { public static void main(String args[]) throws IOException { System.out.print("発生させる乱数の回数は?"); BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num= Integer.parseInt(str); for(int i=1;i<=num;i++){ int a=(int)(20*Math.random()+1); System.out.println(a); } for(int a=1; a<=;a++){ if(a%2==1); System.out.println("発生した乱数の"++"%が奇数です。"); } } }

  • 大きさ10の配列に次の10個の整数が格納されている。

    大きさ10の配列に次の10個の整数が格納されている。   2、-8、5、-4,6,5,7、-3、-9,1 奇数、偶数、負の数がそれぞれいくつあるかを数え表示するプログラムはどのように書けばいいですか、教えてください。 奇数=6 偶数=4 負=4 と表示されるようにしたいです。

  • プログラムについて

    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
  • Javaのプログラムが完成出来ません・・・

    この前、大学からこんな課題が出されました。 以下の条件が含まれてるシェルソートのプログラムを作成せよ。 条件。 ・ソート済み部分に新しい値を挿入するための空き場所を作るメソッドを入れること。 ・配列の逆順数を計算するメソッドを入れる。 ・今の歩幅より一段階小さい歩幅を計算するメソッドを入れる。 ・配列の大きさに一番合った歩幅を計算するメソッドを入れる。 ・歩幅hの挿入ソートを行うメソッドを入れる。 ・シェルソートを行うメソッドを入れる。 ・mainメソッドを完成させ、ソート過程を表示しながらシェルソートを実行するようにする。 ・作成したプログラムが正しく選択ソートを実行していることが分かる実行結果を示すこと。 ・値は、 a[0]=0, a[1]=30, a[2]=20,a[3]=10 一応プログラムは、 class ShellSort{ static int compare = 0; static int copy = 0; static void showArray(int a[], int N){ //2-0:逆順数と共に配列の内容を表示するメソッド //動作:N個の要素を持つ配列aの要素を全て画面に表示する //} static void initArray(int a[], int N){ //2-0:配列にランダムな値を代入するメソッド //動作:N個の要素を持つ配列aに対し、1~Nまでの範囲の数をランダムに入れる //ただし、a[0]には常に0を入れること。 } static int shiftLargerElements(int a[], int v, int i){ //2-0:ソート済み部分に新しい値を挿入するための空き場所を // 作るメソッド //動作:配列aに対し、a[i]より手前にあるvより大きい要素を後ろ //に1つずつずらしてvを挿入するための空き場所を作る。最後に、 //できた空き場所の添え字を戻り値として返す。 //空き場所を作るまでに行った比較回数を変数compareに加算 //空き場所を作るまでに行ったコピー回数を変数copyに加算      int space = 0; int j; j = i; while((compare++ >= 0) && (a[j-1] > v)){ a[j] = a[j-1]; copy++; j--; } space = j; return space; } static int shiftLargerElements(int a[], int v, int i, int h) { //2-1:ソート済み部分に新しい値を挿入するための空き場所を // 作るメソッド //動作:配列aに対し、a[i]より手前にある要素 //a[i-h],a[i-2h],a[i-3h],...のうち、vより大きい各要素を後ろに //hだけ移動させてvを挿入するための空き場所を作る。 //最後に、できた空き場所の添え字を戻り値として返す。 //空き場所を作るまでに行った比較回数を変数compareに加算 //空き場所を作るまでに行ったコピー回数を変数copyに加算 int space = 0; return space; } 現在はここまでしか作成出来てません。 それ以降でつまづいています。 分かる人がいましたら、是非教えて下さい。

  • javaプログラミング初心者の質問です。

    1 3 5 7 9 11 13 15 17 19 21 23 のように10個ずつ改行し99までの奇数を表せるプログラムをお願いします。 できれば同じように100までの偶数を表示できるプログラムもお願いします。

  • javaでif文を使ってわかりません

    javaでif文を使ってわかりません わからないのはキーボード入力で0なら「0です」と偶数・奇数ならそれぞれ偶数・奇数と表示するif文のプログラムです。 とりあえず import java.util.Scanner; public class OddEven2 { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int str = sc.nextInt(); if(str==0) { System.out.println("0です"); } } } まではできました けど何億とある数字をキーボード入力で奇数なら奇数だけ表示させるとはどういうことでしょうか? 条件処理でこの値以上この値以下でなわけないし 糸口さえ掴めない状態です ヒントをいただけるとありがたいです

  • javaプログラミングの質問です。

    1~100までの奇数を表すプログラムと偶数を表すプログラムをお願いします。 (10文字ごとに改行)Systm.out.printlnを10個は✖ よろしく願いします

    • ベストアンサー
    • Java
このQ&Aのポイント
  • 日立P50-XP05プラズマテレビの電源が入らなくなりました。赤ランプは点灯するものの、グリーンランプが点灯せず、コンデンサー交換後も改善されませんでした。可能性としては電源部の温度センサーに問題があるのかもしれません。解決方法を知りたいです。
  • 日立P50-XP05プラズマテレビの電源が点かなくなりました。コンデンサーを交換したことで一時的に動作しましたが、1日程度経つと同じ問題が発生します。この問題は温度センサーによるものなのでしょうか?解決策を教えてください。
  • 日立P50-XP05プラズマテレビの電源が入らなくなりました。赤ランプは点灯しますが、グリーンランプが点灯せず、コンデンサーを交換しても改善されません。おそらく温度センサーに問題があるのだろうか?同じ問題を経験された方からのアドバイスをお願いします。
回答を見る

専門家に質問してみよう