Javaのエラーについての質問

このQ&Aのポイント
  • Javaのコンパイルエラーの解消方法について教えてください
  • ローカル変数dataReceivedが初期化されていない可能性があります
  • data_readAsync(handle, 8, dataReceived)で停止する問題が発生しています
回答を見る
  • ベストアンサー

javaのエラーについて質問

毎度、お世話になります。 下記のコードで、”data_readAsync(handle, 8, dataReceived)”のdataReceivedに ”ローカル変数dataReceivedが初期化されていない可能性があります”と言う コンパイルエラー(赤xマーク)が発生します。 この状態で実行しますと、”必要なプロジェクトでエラー、起動を実行しますか”の 警告表示がでますが、実行をします。 実行をしますと、前記の、”data_readAsync(handle, 8, dataReceived)”で停止します。 Q1)このコンパイルエラーの解消方法につきまして、コメント頂けますと 大変助かります。 // This callback is called after data_readAsync has been received. // The asynchronous transfer chain ends here. // 終了処理 final TransferCallback dataReceived = new TransferCallback(){ @Override public void processTransfer(Transfer transfer){ int read_wordSize=transfer.actualLength()/4; System.out.println("dataReceived: read_wordSize="+read_wordSize+ " words received"); ByteBuffer buffer = transfer.buffer(); //read_wordSize個の読取データーをバッファーに格納する //============================= for(int i=0; i<read_wordSize; i++){ BUFF[ptrW++]= buffer.getInt(); } //============================= System.out.println("dataReceived: wordDataA=0x"+Integer.toHexString(BUFF[ptrW-4]) ); System.out.println("dataReceived: wordDataB=0x"+Integer.toHexString(BUFF[ptrW-3]) ); System.out.println("dataReceived: wordDataC=0x"+Integer.toHexString(BUFF[ptrW-2]) ); System.out.println("dataReceived: wordDataD=0x"+Integer.toHexString(BUFF[ptrW-1]) ); if(read_wordSize>0){ data_readAsync(handle, 8, dataReceived); //dataの読込み dataSizeWord=8 } else{ LibUsb.freeTransfer(transfer); System.out.println("Asynchronous communication finished"); exit = true; } } }; ============ 以上

  • Java
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • ohac
  • ベストアンサー率33% (1/3)
回答No.1

dataReceived の初期化中にそれ自身(dataReceived)を参照していることが原因だと思います。

bakabon_xx
質問者

補足

早速の回答有難うございます。 この対応方法を説明して頂けますと大変たすかります。 javaの初心者ですが、宜しくお願いします。 以上

関連するQ&A

  • javaに関しての質問です (エラー)

    最近javaの勉強を始めたばかりの者です とある動画をみながら勉強をしていたのですが なぜかエラーが出てしまいます。 エラーの内容は... エラー:この文に制御が移ることはありません     if( c== 13){ エラー:return文が指定されていません この二つです、もし解決方法がわかる方がいましたらぜひ教えてくれるとうれしいです 下がソースコードになります。 public class part01 { static String name = "すけさん"; static int lv = 30; public static void main( String[] args )throws java.io.IOException { putzyosyou(); // 序章を表示 putcommnd(); if(lv<40){ putgameover(); }else{ putgamecrear(); } } public static void putzyosyou() { System.out.println("魔王が世界を滅ぼそうとしている。"); System.out.println(name + "はレベルが" + lv + "のツワモノです"); } public static void putcommnd()throws java.io.IOException { System.out.println("1.魔王を倒しに行く"); System.out.println("2.修行する"); System.out.println("3.だれかに頼る"); System.out.println("4.そんなことよりも寝よう"); int c = inputcommnd(); if( c== '1' ){ System.out.println("魔王が現れた!!"); }else if( c== '2' ){ lv += 2; System.out.println ("レベルが"+ lv + "になった!!"); putcommnd(); } } public static int inputcommnd()throws java.io.IOException { int c = System.in.read(); if( c== 10){ return( inputcommnd() ); if( c== 13){ return( inputcommnd() ); } return( c ); } } public static void putgameover() { System.out.println(name + "は負けました。"); System.out.println("GAME OVER"); } public static void putgamecrear() { String str = name + "は魔王を倒しました。"; put( str ); if(lv>120){ System.out.println("レベル" + lv + "なので魔王ゴミでした"); }else if(lv>80){ System.out.println("レベル" + lv + "なので余裕でした"); }else if(lv>50){ System.out.println("レベル" + lv + "なので倒せました"); }else{ System.out.println("レベル" + lv + "なので苦戦しました"); } System.out.println("GAME CREAR"); } static void put( String str ) { System.out.println( str ); } }

    • ベストアンサー
    • Java
  • javaプログラミングの質問です。

    プログラムで数値の奇遇、合計値、最大値までは出せたのですが平均値の出し方がわかりません。 どこに何を入れればいいかを教えてください。お願いします。 public class pazu{ public static void main(String[] args){ int sum =0,saidai; System.out.println("コマンドラインパラメータは"+args.length+"個です"); for(int i=0;i<args.length;i++){ int x=Integer.parseInt(args[i]); if(pazu.is_even(x)) System.out.println(args[i]+"は偶数です"); else System.out.println(args[i]+"は奇数です"); sum+=x; } saidai=pazu.max(args); System.out.println("合計:"+sum); System.out.println("最大:"+saidai); } static boolean is_even(int number){ return number%2==0; } static int max(String[] number){ int max =0; for(int i=0;i<number.length;i++){ if(max<Integer.parseInt(number[i])){ max=Integer.parseInt(number[i]); } } return max; } }

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

    現在JAVAについて学んでいるのですが、下記のソースが実行出来ません。どなたかわかる方、回答宜しくお願いいたします。 public class Lound { void main(String[] args) { String rtn = methWithParamReturn(3); if(rtn.equals("0")) System.out.println("0あかんよ"); else System.out.println(rtn); } public String methWithParamReturn(int x) { System.out.println(x); x= x*x; String str = String.valueOf(x); return str; } }

  • java

    次のコード中の括弧内で下に示す11通りの各コードを実行した場合の実行画面を正確に答えよ。 class A{ public void func1(){System.out.println("A1");} public void func2(){System.out.println("A2");} } class B extends A{ public void func1(){System.out.println("B");} } class C{ public int x=0, y=1; } class D extends C{ public int x=2; public void func1(int x){System.out.println(x);} public void func2(int x){System.out.println(this.x);} public void func3(int x){System.out.println(super.x);} public void func4(int x){System.out.println(this.y);} public void func5(int x){System.out.println(super.y);} } class E{ public void func1(int n){ try{ System.out.println("E1"); int[] ary=new int[n]; System.out.println("E2"); }catch(NegativeArraySizeException e){ System.out.println("E3"); }finally{ System.out.println("E4"); } } } (1) A a=new A(); a.func1(); (2) A a=new B(); a.func1(); (3) B b=new B(); b.func1(); (4) B b=new B(); b.func2(); (5) D d=new D(); d.func1(3); (6) D d=new D(); d.func2(3); (7) D d=new D(); d.func3(3); (8) D d=new D(); d.func4(3); (9) D d=new D(); d.func5(3); (10) E e=new E(); e.func1(5); (11) E e=new E(); e.func1(-2); (1) A1 (2)B (3)B (4) A2 (5) 3 (6) 2 (7) 0 (8) 1 (9) 1 (10) E1E2E4(11) E1E3E4 と答えになるんですがなぜこうなるのかわかりません。教えてください

    • ベストアンサー
    • Java
  • Javaコンパイルエラー

    Javaにて以下のようなプログラムを作成していますが、 「演算子 ^ は引数の型 double, int で未定義です。」とエラーになりました。 色々な方のご協力もあり、ここまで作れましたが、 これより先が行き詰っています。 教えていただけないでしょうか。 ---------------------------------------------- // 分散を返すメソッド public class Kadai16 { public static void main(String args[]){ //double型の配列の生成 double[]a=new double[10]; argument(a); //配列aの要素[0]から[9]の内容を表示 System.out.println(a[0]); System.out.println(a[1]); System.out.println(a[2]); System.out.println(a[3]); System.out.println(a[4]); System.out.println(a[5]); System.out.println(a[6]); System.out.println(a[7]); System.out.println(a[8]); System.out.println(a[9]); //double total=sum(a)を実行する double total =sum(a); System.out.println("合計は"+total+"です。"); //使って平均を出す double heikin; mean(total); heikin = mean(total); System.out.println("平均は"+heikin+"です。"); //分散を返す double bunsan; bunsan = total-heikin^2/10; System.out.println("分散は"+bunsan+"です。"); } /** * ランダムな数値を入れるメソッド * @param a ランダムな数値を入れる配列 */ private static void argument(double[]a) { //引数の配列aの[0]から[9]までランダムな数値を設定する。 for(int i=0; i<a.length;i++) { a[i]=Math.floor(Math.random()*10); } } //配列を受け取って要素の合計を出すメソッド public static double sum(double[] x) { double t=0; for(int i=0; i<x.length;i++) { t= x[i]+t; } return t; } //配列を受け取って平均を出すメソッド public static double mean(double b) { return b/10; } //分散を返すメソッド public static double bunsan(double c) { double t=0; double bnsan =0; for(int i=0; i<c.length; i++) { t =c[i]+t } } }

  • javaファイルの質問!

    public class kazuate{ public static void main(String args[]){ int computer = (int)(Math.random()*100)+1; int player = 0; int count = 0; System.out.println("数当てゲーム(範囲は0~99)"); System.out.println("何回で当てられるかな?"); while(true){ count++; System.out.print("数字を入力してください"); player = Integer.parseInt(args[0]); if(computer > player){ System.out.println("小さいです。"); }else if(computer < player){ System.out.println("大きいです。"); }else if(computer == player){ System.out.println(count +"回目で当りです。"); break; } } } } コンパインしたら break文を使っているのに繰り返しがとまらず永遠に回答が流れてしまいます。なぜでしょうか?

  • javaのエラーが回収できない

    JAVA初心者です。下記のエラーを直したいんですがよくわかりません。 Exception in thread "main" java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at hangman.main(hangman.java:141) ソースを載せたいのですが200行程度あって全部載せられないので 関連しそうなところだけ載せます。 ~~~~~~~~~略~~~~~~~~~~~ try{ int input=System.in.read(); char str_moji1=(char)input; //ユーザの1文字入力 if(words[chosenWordRecord].indexOf(str_moji1) != -1){ System.out.println("debug:"+str_moji1+"の場所"+(words[chosenWordRecord].indexOf(str_moji1)+1)); } else{ System.out.println(str_moji1+"は含まれてないよ!"); } for(int arrayNum=0; arrayNum<wordArray.length; arrayNum++){ if(wordArray[arrayNum]==str_moji1){ System.out.print(" "+str_moji1); } else{ System.out.print(" _"); } } }catch(IOException e){ System.out.println(e); } try{ System.out.print("入力テスト:"); BufferedReader br1=new BufferedReader(new InputStreamReader(System.in)); String str=br1.readLine(); step=Integer.parseInt(str); //int型に変換 }catch(IOException e){ System.out.println(e);            //141行目 } ~~~~~~~~~略~~~~~~~~~~~ 状況としては、 ユーザの入力によって2つのテキストファイルを順にコマンドライン上に 表示しようとしているのですが1つ目のファイルから単語を呼んで処理を終えた後に、 2つ目のファイルを呼ぶための入力ができなくなっているようです。 かってに数字以外の文字が入力されてしまっているということでしょうか? エラーで指定された場所にcatch(NumberFormatException e){}も追加してみましたが ただエラーが表示されなくなるだけでした。 ちなみに変数はすべて宣言してあります。 解決方法ご存知の方いましたら教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • javaに関する質問

    IT関係のスクールに通っていて、javaの勉強をしている人間です。javaに関して、ご質問があります。授業で課題を出されたのですが、どうしても行き詰っています。 問題は次のような内容です。 ・店別売上高表の作成 店番号と売上高を入力して、店ごとの売上を表示する表を作成するプログラムを作りましょう。 条件;(1)店番号は1~8までとしてください。 (2)入力処理は繰り返しできるようにしてください。 (3)売上1,000,000分に対して、*(アスタリスク)を1個表示させるようにしてください。 (4)表示する*が60個以上の場合は、60個だけ表示するようにしてください。 (5)全店舗の合計売上高も表示するようにしてください。 上の5つの条件を満たして下記の実行画面が表示させるようにします。 --------------------------------------------------------------- 店番号を入力してください(1~8) 2 売上高を入力してください(<99999999) 22222222 入力を続けますか yes...1,no...other number 1 店番号を入力してください(1~8) 5 売上高を入力してください(<99999999) 55555555 入力を続けますか yes...1,no...other number 2            店別売上高表         ---+---+---+---+---+---+---+---+---+---+---+---+ 1号店 0 2号店 22222222 ********************** 3号店 0 4号店 0 5号店 55555555 *************************************** 6号店 0 7号店 0 8号店 0 売上  77777777 -------------------------------------------------------------- という問題です。途中までの僕のやり方は import java.io.*; class A { public static void main(String args[])throws IOException{ BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); do{ System.out.println("店番号を入力してください(1~8)"); String str1=br.readLine(); int num; if(num>=1 && num<=8) num=Integer.parseInt(str1); } System.out.println("売上高を入力してください (<99999999)"); String str2=br.readLine(); if(uriage<99999999) uriage=Integer.parseInt(str2); } System.out.println("入力を続けますかyes...1,no...other number"); flag=Integer.parseInt(br.readLine()); }while(flag==1); System.out.println(" 店別売上高表 "); System.out.println("--+---+---+---+---+---+---+---"); for(int i=0;i<8;i++){ System.out.println((i+1)+"号店"); }}} do~while文が終わった後、店番号の右に売上高とアスタリスクを表示させるためには、どうしたらいいのでしょうか?どなたか、もしよろしければ教えていただけないでしょうか?よろしくお願いします。

  • javaじゃんけんゲーの質問

    このjavaじゃんけんゲームで 0を押すまでじゃんけんが続いて0押したら終了して、終了と表示して、じゃんけんの勝敗が表示されるように作りたいんですけどどうしたらいいですか?教えてください import java.io.*; class kadai6 { public static void main(String args[]) throws IOException { System.out.println("これは、じゃんけんゲームです。"); System.out.println("あなたの手を入力して下さい。(1:グー、2:チョキ、3:パー、0:終了)さぁどれにしますか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res =Integer.parseInt(str); switch(res){ case 1: System.out.println("あなたの手はグーです。"); break; case 2: System.out.println("あなたの手はチョキです。"); break; case 3: System.out.println("あなたの手はパーです。"); break; default: System.out.println("あなたの入力した値はエラーです。1~3の値を入力してください。"); System.exit(1); break; } int comp = (int)(Math.random()*3) + 1; switch (comp){ case 1: System.out.println("コンピュータの手はグーです。"); break; case 2: System.out.println("コンピュータの手はチョキです。"); break; case 3: System.out.println("コンピュータの手はパーです。"); break; default: System.out.println ("エラーです。"); break; } switch (res -comp) { case -2: System.out.println("コンピュータの勝ちです。"); break; case -1: System.out.println ("あなたの勝ちです。"); break; case 0: System.out.println ("あいこです。"); break; case 1: System.out.println ("コンピュータの勝ちです。"); break; case 2: System.out.println("あなたの勝ちです。"); break; default: System.out.println ("エラーです。"); break; } } }

  • エラーの訂正でアドバイスください。

    javaプログラミング超初心者です import java.io.*; public class ex22b { public static void main(String[] arg) { System.out.print("x: "); int x = (new Integer (in.readLine())). intValue(); System.out.print("y: "); int y = (new Integer (in.readLine())). intValue(); int a; while (y > 0) { a = a + x; System.out.println("kekka = " + a); System.out.println("y = " + y); y = y - 1; } System.out.println("乗算結果は " + a); } } というソースを書いたら、コンパイルの際に シンボルを見つけられません シンボル:変数 in 場所  :ex22bのクラス int x = (new Integer (in.readLine())). intValue();            ^ int y = (new Integer (in.readLine())). intValue();            ^ というエラーが出ました。 どこをどう直したらいいのでしょうか。

    • ベストアンサー
    • Java

専門家に質問してみよう