• ベストアンサー

javaプログラミングについて

char配列に入っている文字を別のchar配列へ逆向きにfor文で代入するソースを教えてください。 例:char1[a,b,c]→char2[c,b,a] うまく説明できているかわかりませんがよろしくお願いします。

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

  • ベストアンサー
回答No.4

> for( int i = 0; i<=max; i++ ){ 比較演算子が「<」から「<=」に変更されている事に注意して下さい。

phoenix-1214
質問者

お礼

詳しくありがとうございました。助かりました!!

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

その他の回答 (3)

回答No.3

> char[] char1 = new char[]{ > 'a','b','c', > }; > char[] char2 = new char[char1.length]; > int lng = char1.length; > for( int i = 0; i<lng; i++ ){ > char2[lng-1-i] = char1[i]; // ←ここが間違ってました。 > } > for( int i = 0; i<lng; i++ ){ > System.out.println( > "i="+i+"; "+ > "char2[i]="+char2[i]+"; "+ > ""); > } 下記のようにした方が分かりやすいかもしれません。 char[] char1 = new char[]{ 'a','b','c', }; char[] char2 = new char[char1.length]; int max = char1.length-1; for( int i = 0; i<=max; i++ ){ char2[max-i] = char1[i]; } for( int i = 0; i<char2.length; i++ ){ System.out.println( // デバッグ用 "i="+i+"; "+ "char2[i]="+char2[i]+"; "+ ""); }

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

> 回答有難うございます。実行してみたのですがエラーがでました(;^_^A 大変申し訳ございませんm(_ _)mバグが有りました。 char[] char1 = new char[]{ 'a','b','c', }; char[] char2 = new char[char1.length]; int lng = char1.length; for( int i = 0; i<lng; i++ ){ char2[lng-1-i] = char1[i]; // ←ここが間違ってました。 } for( int i = 0; i<lng; i++ ){ System.out.println( "i="+i+"; "+ "char2[i]="+char2[i]+"; "+ ""); }

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

実行していませんが、これで良いと思います。 public static void main(String[] args) { char[] char1 = new char[]{ 'a','b','c', }; char[] char2 = new char[char1.length]; int lng = char1.length; for( int i = 0; i<lng; i++ ){ char2[lng-i] = char1[i]; } }

phoenix-1214
質問者

補足

回答有難うございます。実行してみたのですがエラーがでました(;^_^A for(int i =0;i<lng;i++){のとこで引っかかるみたいです。僕が間違っているのかもしれません。色々試してみます

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

関連するQ&A

  • プログラミングの問題なのですが、

    プログラミングの問題なのですが、 文字列[black]と[dog]を異なった2つの配列に初期化して与え、 別の配列をさらに定義、その中に1つの文字列 [blackdog]として データを代入⇒表示する(出力例: black + dog = blackdog) というプログラムはどんなのになるか教えて下さい。 ただし、使えるのはfor文・配列・if文ぐらいでそれ以上レベルの高いものは使わないで下さい。 始めは char str1[6]={'black'}; char str2[4]={'dog'}; char str3[9]; int i, ……; という感じでお願いします。

  • javaプログラミング

    ただいまjavaで3×3のビンゴの制作で練習しております。 ビンゴカードの数字、ビンゴのボール?の数字を1~9で制作しました。 まず、一つの配列に1~9の数字をランダムで配置し、そしてそれを3×3の二次元配列で配置し、そしてさらにもう一つの配列にビンゴボールの番号をランダムで配置し、照らし合わせていくというプログラムを作りました。 3×3の数字で、出てきたボールの数字と対応した、二次元配列にある数字を0に変更(入れ替え)というところまで、できました。そこで最後にビンゴかどうかの判定をするところで詰まってしまいまして、縦、横、ななめいづれかに0が並ぶとビンゴ達成なのですが、ビンゴの判定方法のソースコードがわかりません。for文で回してみたりif文でやってみたりしたのですがどれもダメでした。一例や、ヒントなど。回答よろしくお願いします。 色々調べてみたのですが、自分のように全部配列に入れて動かしているソースが見つからず質問させていただきました。

  • char型のポインタ配列に変数の値の代入できる?

    c言語でchar型のポインタ配列に変数の値を代入できるのでしょうか? 例えば int A[10]={1,2,3,4,5,6,7,8,9,10}; char *C[10]; のCに配列Aの中のデータを文字列として入れたいのです。 C[0]="A[0]"としてもA[0]という文字列が代入されてしまうだけなので… よろしくお願いします。

  • c言語の問題です。解説と解答をお願いします

    (1) doube a[3][4]で宣言された2次元配列の要素a[y][x]に割り当てられるメモリのアドレス&a[y][x]を数式で表せ。x∈{0,1,2,3},y∈{0,1,2}である。 (2) 下記の宣言文によって複数個の配列要素に初期値を代入した。各配列要素に代入される値を説明しなさい。 char b[]={‘X’,’Y’,’Z’}; char c[]=“xyz”; char *d[]={“ONE”,”TWO”,”THREE”}; int e[3][2]={1,3,5,7,9,11}; お願いします。

  • プログラミングの問題で幾つか分からないことがあります。

    プログラミングの問題で幾つか分からないことがあります。 入力した文字列のアスキーコードを1上げて表示するというもので、 #include <stdio.h> int main(void){ char a[100]; int b, c; scanf("%s", a); for(b = 0; b <= 99; b++){ if(a[b] == '\n'){ break; } a[b] == a[b] + 1; } printf("%s", a); return 0; } というふうに作ったのですが、基の文字列がそのまま表示されてしまいます。 あと、文字列strの中にある文字列bagに含まれる文字と同じ文字を空白に置き換える関数を作り、文字列を与えて動かすというプログラムで、 #include <stdio.h> char str[100], bag[100]; int str_space(char str[], char bag[]){ int a, b, c, d; for(a = 0; a <= 99; a++){ if(str[a] == '\n'){ b = a; break; } } for(a = 0; a <= 99; a++){ if(bag[a] == '\n'){ c = a; break; } } for(a = 0; a <= b; a++){ for(d = 0; d <= c; d++){ if(str[a] == bag[d]){ str[a] = ' '; } } } return 0; } int main(void){ scanf("%s", str); scanf("%s", bag); str_space(str, bag); printf("%s", str); return 0; } というふうに作ったのですが、動きませんでした。 ヒントでもいいのでどなたかお教え下さい。

  • C言語のプログラミングですが、

    C言語のプログラミングですが、 255文字以内の文字列をキーボードから入力して、下記の各処理を行うプログラム(※入力した文字データは配列に入力)はどのようにしたらいいでしょうか?(入力例:acFNkeexFFg) ・入力した文字列の最後の文字を出力 ・入力した文字列⇒逆に並べ替えて出力 ・入力した文字列⇒縦に出力(1文字ずつ) ・入力した文字列の中に「F」が何個あるか ただし、使えるのはfor文・配列・if文ぐらいでそれ以上レベルの高いものは使わないで下さい。 … char str[255]; int i,n,na,nb,nc; printf("Input Strings= "); scanf("%s",str); for(i=0;str[i]!='¥0';i++){ n=i; } printf("The last character= %c",str[n]); くらいまでしか分かりません…

  • C/C++等で1次元配列を2次元配列に代入する方法

    凄く簡単な事だと思うのですが分からないので質問させて下さい。 例えば、 char a[10][20] ; char b[20] = "代入したいデータ" ; という配列がある場合、このa[0]の行にbの文字列を入れるにはどうしたら良いのでしょうか。 よろしければ回答をよろしくお願い致します。

  • charの操作について

    お世話になります、フジと申します。 今回皆様にお聞きしたいことはchar型変数の操作についてなのですが、次のプログラムのようにchar型に代入した整数を16進数用に変換させ、最後に同じchar型の変数に代入したいと考えています。 int a,b,c; char data = 48; //dataに10進数48を代入 c = (int)data; //ここでcは48になる a = c/16;          //16進数用に変換 b = c%16; c = 10*a + b;        //ここでcは30になる このint型変数c(30)をchar型変数dataに代入するにはどうしたらいいでしょうか? char buf[5]; sprintf(buf,"%d",c); にすればchar型の配列に代入することは出来ますが、これだとcの値30がbuf[0]=3,buf[1]=0となってしまい、目的の操作が達成できません。 よい方法をしっている方がいましたら、宜しくお願い致します。

  • 二次元配列のプログラミングが分かりません

    センサからは常に「#(ONかOFFが16)CR」全部で18個の情報が送られてきます。ONは1、OFFは0を返します。 この情報20回分を二次元配列に格納し、排他的論理和を取るプログラムを考えています。 *************************************** 例3回の場合 1回目#1101110000000111CR 2回目#0010110101110100CR 3回目#0110010100010101CR これを縦に排他的論理和を取っていきます。 まず1回目と2回目の排他的論理和をとる 次に2回目と3回目の排他的論理和をとる 最後に全部で1がいくつあったのかを表示 **************************************** このようなプログラムを書きたいです。どのように書いたらいいでしょうか。 <今できているプログラムは以下です> int main(void) { int i=1; int a=0; int A[20][18]; int b,c =0; char* Buffer; FILE *fp1; Buffer = (char*)calloc(1024,sizeof(char)); char port1[10]; sprintf(port1,"COM6"); fp1 = fopen("result.txt","w"); // ファイルを開く /*ポート設定省略*/ /* 配列の初期化*/ for(b=0;b<20;b++){ for(c=0;c<18;c++){ A[b][c]=0; fprintf(fp0,"%2d",A[b][c]); } } fclose(fp0); /********************************* 数を合わせる #が入ったら読み込み残りの17を拾う *********************************/ do{ CommPort1->ReadBytes((unsigned char*)Buffer,1); }while(*Buffer !='#'); CommPort1->ReadBytes((unsigned char*)Buffer+1,17); //残りの17byteを読み込む CommPort1->FlushCommPort(); //データの送受信 for(int i=0;i<20;i++){ //20回分のデータを読みこみ、テキスト出力 tuushin(Buffer); n++; fprintf(fp1,"%d=%s \n",n,Buffer); } fclose(fp1); return 0; } /**************************************************** 通信する関数 「#(ONかOFFが16個)endコード」、計18からなる文字列を読み込み表示 ****************************************************/ void tuushin(char*Buffer) { CommPort1->ReadBytes((unsigned char*)Buffer,18); CommPort1->FlushCommPort(); printf("%s\n",Buffer); } どのようにかけばいいのか分からないので、教えてください。

  • プログラミング

    プログラミング初心者なのですが、次のソースについて説明お願いします。 #include<stdio.h> int main(void) { int a[3]; int i; for(i = 0; i <= 2; i++) { a[i] = i + 1; printf("a[%d] = %d\n", i a[i]); } return 0; } for文でiに0を代入して繰り返す条件を仮定したあとの a[i] = i + 1; とprintfの中の仕組みがよくわかりません・・・。 お願いします<(_ _)>