Javaの戻り値についての質問

このQ&Aのポイント
  • Javaの戻り値を使ったプログラムでエラーが発生しています。エラーの内容は変数xと変数yが見つからないというものです。
  • プログラムの12行目で、変数xと変数yを使用していますが、これらの変数が宣言されていないためエラーが出ています。
  • このエラーを修正するには、変数xと変数yを適切に宣言して初期化する必要があります。
回答を見る
  • ベストアンサー

java 戻り値についての質問です。

 戻り値を使ったプログラムを作成したところエラーが出たのですが、どこを修正しなければならないのかわかりません。 [プログラム] public class Main31{ public static int add(int x, int y){ int ans = x + y; return ans; } public static void main(String[] args){ int ans = add(100 , 10); System.out.println(x +"+"+y+"="+ans); } } [エラーの内容] Main31.java:12: エラー: シンボルを見つけられません System.out.println(x +"+"+y+"="+ans);     ^ シンボル: 変数 x 場所: クラス Main31 Main31.java:12: エラー: シンボルを見つけられません System.out.println(x +"+"+y+"="+ans);      ^ シンボル: 変数 y 場所: クラス Main31 エラー2個 どこを直せば良いのかと、このプログラムだとエラーが出てしまう理由を教えてください。よろしくお願いいたします。

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

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5078/13270)
回答No.2

System.out.println を実行しているmain関数内で変数 x と y を定義していないのが問題かと思います。 int ans = add(100 , 10); の部分を int x = 100; int y = 10; int ans = add(x , y); にすればいいんじゃないでしょうか。

kukukucyan
質問者

お礼

ご回答ありがとうございます。この通りに修正しましたところ、きちんと実行されました。ありがとうございました!

その他の回答 (1)

  • wormhole
  • ベストアンサー率28% (1619/5654)
回答No.1

戻り値は関係ありません。 変数のスコープルールは理解されていますか? mainメソッドにとっての変数xとyの定義はどこにありますか?

kukukucyan
質問者

お礼

ご回答ありがとうございます。スコープルールについてわかっているつもりでしたが理解が足りなかったようです。今一度確認してみます。ありがとうございました!

kukukucyan
質問者

補足

addメソッドでadd(int x, int y)を定義しているので、 mainメソッド内でint ans = add(100, 10); とすれば、 int x = 100; int y = 10; が自動で定義されるものだと勘違いしておりました。

関連するQ&A

  • 複素数の計算するクラスを足せる人がもしいたら

    このJavaプログラムはAdd(足し算)とSud(引き算)を計算するプログラムです。 import Java.io.*; class INT { public int Add(int x,int y){ return x+y; } public int Sub(int x,int y){ return x-y; } } class REAL extends INT { public double Add( double x,double y){ return x+y; } public double Sub( double x,double y){ return x-y; } } class CAL extends REAL { } … public class Cale { public static void main(String args[]) { CAL c = new CAL(); System.out.println( c.Add(1,2) ); System.out.println( c.Add(1.0,2.0)); System.out.println( c.Sub( 1,2)); System.out.println( c.Sub( 1.0,2.0)); } } このプログラムに「複素数の足し算と引き算をするクラス」をクラスの仕様も併せて 作成することが出来る人がもしいたら宜しくおねがいします☆

  • java 戻り値なしの乗算について

    最近javaを習い始めたのですが、今やっている戻り値なしの乗算の実行コマンドの書き方が解りません。 問題の内容が、 class SampleB{ int data=100; void kakezan(int a){ int ans; ans=a*data;       System.out.println(a+"*"+data+"="+ans); } } class Jikko{ //ここ } 問題 (引数 あり 戻り値 なし) Jikkoクラスの//ここに実行するためのメソッドをつくり、 ・SampleBクラスのkakezan()メソッドに「3」、「8」、「10」を渡して呼出 なのですが、 class JikkoB{ public static void main(String[]args); SampleB b=new SampleB(); int ans=a*data; System.out.println("a+*data=+"ans); b.a(3); } } ここまで書きましたがエラーが7つも出てコンパイルできません。 色々と調べましたが正しいメソッドが解りません。 どなたか詳しい解答と解説を教えていただければ幸いです。

    • ベストアンサー
    • Java
  • エラーの訂正でアドバイスください。

    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
  • javaのローカル変数について

    基本的なことの質問ですがよろしくお願いいたします。 下記の様なソースコードでint y ;はローカル変数にあたると思いますが 確かローカル変数は初期化されないとコンパイルエラーになるはずなのですが どうもコンパイルも実行もできます。 どうしてでしょうか? よろしくお願いいたします。 class Test1{ static int x = 0; } public class Test extends Test1{ public static void main(String args[]){ Test i = new Test(); int y ; y = ++x; System.out.println( y ) ; } }

    • ベストアンサー
    • Java
  • 昇進者です。 戻り値の学習をしていますが。

    *を10個表示するプログラムですが。 public class Graph1 { public static void main(String[] args) { printGraph(10); } public static void PrintGraph(int x) for(int i = 0; i < x; i++){ System.out.println("*"); } System.out.println(""); } } のprintGraph(10);は何のためにあるのですか? 10がxに代入されていますよね。戻り値はxですか。

  • java Eclipse 初心者 メソッド

     次のようなプログラムを書きました。”変数 mainにvoidは無効な型です。”とエラーが発生しました。 package lesson5; import java.util.Random; import java.util.Scanner; public class MentalArithmetic { static Scanner stdIn = new Scanner(System.in); static boolean confirmRetry(){ int cont; do{ System.out.print("もう一度?<Yes・・・1/No・・・0> : "); cont = stdIn.nextInt(); }while (cont != 0 && cont != 1); return cont ==1; } static int mondaix(){ Random rand = new Random(); int a = rand.nextInt(900) + 100; // return a; } static void mondai1( int p, int q, int r){ do{ while(true){ System.out.println(p + "+" + q + "+" + r + " = " ); int k = stdIn.nextInt(); // if(k == p + q + r) // break; System.out.println("違いますよ!!"); } }while (confirmRetry()); public static void main(String[] args) { System.out.println("暗算力トレーニング!!"); while (true) { int x = mondaix(); int y = mondaix(); int z = mondaix(); mondai1( x, y, z); } } } }  これがプログラムです。大学の課題でついにつまずきました。エラーの原因と解決方法(プログラム)を教えていただけるとありがたいです。  初めの方の内容なので簡単なレベル(技術)で解決できると助かります。

  • javaで課題を出されています

    題名の通りなのですが、javaのプログラミングで課題を出されていて うまく書けません お題としては 1 if分と論理演算を使うこと。 2 forまたはwhileを使用すること 3 メソッドを使用すること。(main以外で) 4 配列を使用すること 以上なのですが、一応昔スロットプログラムを作っていたのでこれをベースに作ろうかなと考えています import java.io.*; public class Slot01{ public static void main(String[] args){ try{ //String line =reader.readLine(); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); System.out.println("こんにちは!スロットゲームへようこそ!"); System.out.println("EnterKeyを押して当たりを出してくださいね!"); while(true){ //while文は処理を繰り返すためのものです。 // ▽これよりソースを打ち込んでください //try{ int x=(int)(Math.random()*9)+1; int y=(int)(Math.random()*9)+1; int z=(int)(Math.random()*9)+1; int[]kakuritu; int sum; System.out.print(x); System.out.print(y); System.out.print(z); System.out.println(""); String line =reader.readLine(); //System.out.println(""); if(x==7&&y==7&&z==7){ System.out.println("スーパー大当たり"); }else if(x==y&&y==z){ System.out.println("大当たり"); }else if(x==y||y==z||x==z){ System.out.println("小当たり"); }else{ System.out.println("外れ"); } }//while文の終わり }catch (IOException e){ System.out.println(e); }catch (NumberFormatException e){ System.out.println("正しい形式で表示してください。"); } } } このプログラムなのですが、1と2はこの中に入ってます。考えてみたのですが、このプログラムに当たり確率を表示させるプログラムなら3と4も満たせそうなのですが、いまいちソースが思いつきませんのでご教授お願いします。 文章おかしいところだらけで申し訳ありません。

    • ベストアンサー
    • Java
  • 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 初心者です

    javaの勉強しようと思い、ゲームを作ることになったのですが、画像が表示されなくて困っています。 構想としてはメインクラスからフレームクラス(gameFrame)を呼び出し、フレームクラスから画像表示クラス(Layer)を呼び出したいのですが、 Exception in thread "main" java.lang.NullPointerException at Layer.paint(Layer.java:25) at Layer.<init>(Layer.java:17) at gameFrame.newLayer(gameFrame.java:25) at main.main(main.java:9) というエラーが出てうまくいきません。 下記にLayerクラスを載せるのでお願いします。 import java.awt.*; import javax.swing.*; public class Layer extends JPanel{ int x=0; int y=0; private static final long serialVersionUID = 1L; Image image = null; Layer(String img,int X,int Y){ image=roadImage(img); setVisible(true); x=X; y=Y; paint(this.getGraphics()); } public void paint(Graphics g){ System.out.println("ペイント"); System.out.println(image); g.drawImage(image,x,y,this); System.out.println("ペイント終わり"); } static Image roadImage(String path){System.out.println("イメージセット"); if(path == null){ System.out.println("pathはnullです"); } System.out.println("pathは"+path+"です。"); Toolkit kit = Toolkit.getDefaultToolkit(); return kit.getImage(path); } }

  • Javaプログラミング

    Javaプログラミングで分からない課題が出たので、教えてもらえませんか? 実行結果 1つ目の整数を入力してください。 23 2つ目の整数を入力してください。 12 足し算の結果:35 引き算の結果:11 プログラムの大枠はこのようになるのですが public class 〇〇 { public static void main(String[] args) { System.out.println("1つ目の整数を入力してください。"); } public static int add(int a,int b) { return (a + b); public static int sub(int a,int b) { } }

    • ベストアンサー
    • Java

専門家に質問してみよう