• 締切済み

テーブル項目の初期化につきまして

いつも参考に読ませて頂いております、佐藤と申します。 char[] abc; int[] n1; 上記のようにキャラや数値のテーブル項目を使用するようにプログラムを作成しておりますが、コンパイル時に「変数○○は初期化されてない可能性があります」とのエラーが出てきます。 テーブル項目の初期化の方法を教えて頂きたいのですが、ご存知の方はいらっしゃいますか? 宜しくお願い致します。

  • Java
  • 回答数2
  • ありがとう数3

みんなの回答

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

直接、配列要素を書きたいのなら char[] abc = { 'a', 'b', 'c' }; int[] n1 = { 0, 1, 2 }; とか。何も設定しないのなら char[] abc = null; int[] n1 = null; とか。

satohdesu
質問者

お礼

ご解答、ありがとうございます。 beubeuさんの通りに入力すると、コンパイルエラーが消えました。 これからも使わせて頂きます。

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.1

char[] abc = new char[0]; int[] n1 = new int[0]; とか?

satohdesu
質問者

お礼

PED02744さん、ありがとうございました。 そのような方法で初期化する方法もあるのですね。 勉強になります。

関連するQ&A

  • テーブルの初期化

    教えてください。 C言語は、一通りマスターしております。 現在JAVAを勉強しております。 C言語で作成したシステムをJAVAに移植しようと思ったのですが、 下記のような定義があり、身近な書籍で確認したところ、参考に なる資料がありませんでした。 このようにC言語で定義されたのをJAVAで実現する事は可能でしょうか? これは、禁じ手なのでしょうか? すみませんが、アドバイスお願いします。 (1)構造体を定義します。 typedef struct {   int  iID;   char  szSyainCode[ 12 ];   char  szName[ 40 ];   int  iage; }Syain; (2)定義した構造体を利用し、コンパイル時に初期化を行わせます。 static Syain tSyain[] = {  { 1 ,"ABC001","鈴木",43},  { 2 ,"ABC002","大木",23},  {-1 ,"","",0} } (3)コンパイル (4)実行 (5)プログラムを実行した時にこのテーブルを参照し、処理します。 int i; for( i=0 ;; i++ ){   /* 終端チェック */   if( tSyain[i].iID==-1 ){     break;   }       :

    • ベストアンサー
    • Java
  • 文字列や文字から整数への変換方法について

    文字列(string型)や文字(char型)から整数(int型など)に変換 する時のルールがよく解りません。 たとえば、キーボードから数字を打って、その入力された数字を 数値として整数型の変数に代入したい場合のやり方です。 ちょっとプログラムを作ってみました。 using System; class clmain { private static void Main() { Console.Write("1桁の整数を入れてね "); char ch = char.Parse(Console.ReadLine()); int by1 = (int)ch; int by2 = (int)char.GetNumericValue(ch); Console.WriteLine("by1 = {0}, by2 = {1}, ch = {1}", by1, by2, ch); Console.Write("整数を入れてね "); string st = Console.ReadLine(); /* by = (int)st; コンパイルエラー */ int by3 = int.Parse(st); Console.WriteLine("by3 = {0}, st = {1}", by3, st); } } まず、char型からint型への変換では、  int型変数=(int)char型変数; はコンパイルは通りますけど、実行すると全く違った値が入って しまいます。たとえば char型変数の値が "1" だと、int型変数には 49 が入ります。 int型変数 = (int)char.GetNumericValue(char型変数); と書いてようやく、思い通りの動きをしてくれます。 また、string型からint型への変換では  int型変数=(int)string型変数; はコンパイルエラーになります。 int型変数 = int.Parse(string型変数); とするとコンパイル出来て正しく動きます。 これで質問ですけど、 (1)なぜstring型とchar型で、int型への変換方法が違うのでしょうか? (2)int型変数=(int)char型変数; とすると、上に書いたように、全く 違った(希望しない)値が代入されてしまいます。これは、どういう 動きをしているのでしょうか? また、これはコンパイルエラーに なりませんけど、どういう時にこの書き方をするのでしょうか? 解る方、お願いします。

  • VBAの初期化について

    VBAの初期化について 変数Xに100という値を初期値として代入したいのですが。 Option Explicit Dim X As Integer X =100 と書くとコンパイルエラーになります。 C言語では int X=100 と初期化できますが、 VBAではどのようにすればいいのでしょうか?

  • staticで初期化した変数(?)を使って初期化

    次の3つのプログラム、1番目はコンパイルエラーになりますが、下2つはエラーになりません。1番目のプログラムのエラーメッセージ:初期化子が定数ではありません。 処理系にかかわらずそうだとしたら、その理由はなんでしょうか。 ---------------------------------- int main(void) { static int a=5; static int b=a; return 0; } ---------------------------------- int main(void) { static int a=5; int b=a; return 0; } ---------------------------------- int main(void) { int a=5; int b=a; return 0; }

  • D言語の連想配列の配列

    D言語で連想配列の配列を使いたいのですが、 以下のソースをコンパイルするとコンパイルエラーが起きます。なにがいけないのでしょうか。 int main(char[][] args) { int[3][char[]] x; x[0]["abc"]=1; return 0; } エラーメッセージ test.d(4): cannot implicitly convert expression 0 of type int to char[] test.d(4): cannot implicitly convert expression "abc"i of type char[3] to int

  • atoi

    123と表示されたいんだけど、コンパイルエラーです。 この場合、atoiの引数して、str[3]の文字を入れる変数をもう1つ用意するしかないですか? キャストでうまくできる方法があったら教えてください。 strという変数の"abc123"という文字は変化させたくないんです。 #include <iostream.h> main(){  int i;  char str[] = "abc123";  i = atoi(str[3]);  printf("%d\n", i); }

  • static付き宣言の初期化

    static付きの宣言をした場合の変数の初期化について教えてください。(ANSI-C) int func(void) { static int si; static char sca[10]; static char *scp; /* 何らかの処理 */ return 0; } このように関数内でstatic付きで宣言したとき、変数はどのように初期化されますか? siは0、sca[0]からsca[9]までは'\0'、scpはNULLで初期化されますか? また、このようなstatic付きの宣言が関数の外にあった場合は、どのように初期化されますか?

  • 関数の引数なしを変数に代入したら入ってきた数値は何?

    デバッグソフトで自分のプログラムを動かしていたときに、 int test_func(char x) { x = x + 1; ------(中略)----------- return x; } int main(void) { int test_val; ------(中略)----------- test_val = test_func; ------(中略)----------- } このようにtest_func(char x)という関数の戻り値を変数test_valに代入するつもりだったのですが、間違って引数部分を書かずにコンパイルしてしまいました。 このときにコンパイルでエラーが出ると思ったのですが、コンパイル完了でデバッガで変数test_valをみてみると何か値が入っていました。 ちょっと気になったのですが、この変数の中に入った値はいったい何なのでしょうか。ご存じの方いらっしゃいましたらご教授お願いいたします。

  • クラス内の初期化の簡略方法と、クラス内の巨大な配列をどうにかしたい。

    C++でクラスを書いているのですが、2つ悩んでいることがあります。 1つ目は、初期値のある巨大なテーブルをクラスの中に入れておくと、インスタンス生成ごとに巨大な参照用変数が作られるのはスマートでないと感じるのですが、何か良い方法はありますか? 2つめは、クラスで変数割り当てと同時に初期値セットを簡便に行いたいです。 class A { int info_table[100000]; void init(void){ info_table[0] = 1; // 1)実際は意味のある数値で、参照される巨大な変数 ... // 2)だらだら書くのではなくて、info_table[] = { 1, 2, 3 ... 100000};のように書きたい info_table[99999]; } public: A(){ init(); } ~A(){} };

  • 初期化

    int Func_read(void) { char*prtn1; char*prtn2; char szdat1[81]; char szdat2[81]; int nrtn; prtn1=fgets(szdat1,81,Fp1); prtn2=fgets(szdat2,81,Fp2); if(prtn1==NULL||prtn2==NULL) return(9); nrtn=memcmp(szdat1,szdat2,81); if(nrtn!=0) return } というプログラムで領域のすべてを比較するため、領域を0で初期化しなけれればなりません。どこで初期化すればよいでしょう?

専門家に質問してみよう