• 締切済み

文が指定されていませんエラーについて

public class Stack2 { private static int[] stack = new int[50]; private static int ip = -1; //スタックポインター, -1ならデーターなし public static int push ( int inData ) { // データー格納 if (ip == (stack.length - 1)) { System.out.println(\"スタックがいっぱいです\"); } else { stack[++ip] = inData; } } public static int pop ( ) { // データー取り出し if ( ip < 0 ) { System.out.println (\"スタックにデーターがありません\"); return -2147483648; } else { return stack[ip]; } } } 「Stack2.java:10:return 文が指定されていません」コンバイルエラーになります。 どのようにデバックすれば良いのか教えてください。

noname#68601
noname#68601
  • Java
  • 回答数3
  • ありがとう数1

みんなの回答

  • snowize
  • ベストアンサー率27% (68/245)
回答No.3

メソッドに返り値が指定されているのにreturn文がないというだけのことだと思いますが……、 > koko_uさんの回答は超初心者には難題です。 > 私の教科書には載っておりませんので、 あなたの実力も使用している教科書も知りません。お礼も言わずに「難しいこというな!」というのが正しい姿勢かどうか考えてみましょう。 そもそも教科書にないとしても検索すれば一発で分かることですし、そうすれば#2さんがどれだけ「あなたの意図にかなった回答」をなさっているのか分かると思います。 あなたが礼儀正しい人でしたらこちらも丁寧に回答する気になれたのですが、こんな回答を見た後だと一言説明以上のことをする気がなくなります。結果としてあなたが損をしているわけです。 学生ならまだしもいい年した方でしたら、こちらも人間と言うことを理解して質問なりお礼なりいたしましょ?

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

じゃあ、素直に java.util.Stack<E> を使いましょう。

noname#68601
質問者

補足

koko_uさんの回答は超初心者には難題です。 java.util.Stack<E>と言うのは私の教科書には載っておりませんので、 何のこっちゃさっぱり解かりません。 私はPC好きのオジンでしてプログラマーを目指してる訳でも何でもないので、 答えが解かればそれで満足で、謎は答えから後でゆっくり考えますので答えを教えてください。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

「return 文を書け」と文句を言われているだけ。 あなたの好きなように直せばよい。

noname#68601
質問者

補足

わからんまま文を入れたらclassファイルは出来ましたけども、 java Stack2でコンバイルすると、 Exception in thread"main"java.lang.NoSuchMethooError:main と言うメッセージが出ます。 分かりませんので教えてください。

関連する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
  • return文について質問

    BMIの指数と判定結果を出力したいのですが、「return文が指定されていません」と出てきます。 一番最後の「肥満(4度)」の下の行にreturn d;と挿入すると、ArrayIndexIutIfBoundsExceptionと出てきてしまいました。 何が間違っているのか教えていただければ幸いです。 public class Ex41{ public static void main(String[] args){ double[][] data={ {50,176},{60,170},{70,160},{90,170},{120,175},{120,170} } ; for(int i=0;i<=data.length;i++){ double k=data[i][0]; double c=data[i][1]; } } static double bmi(double k,double c){ double d=k/(c/100)/(c/100); return d; } static double bmicheck (double d){ if(d<18.5) System.out.println("低体重"+d); else if(d>=18.5 && d<25) System.out.println("普通体重"+d); else if(d>=25 && d<30) System.out.println("肥満(1度)"+d); else if (d>=30 && d<35) System.out.println("肥満(2度)"+d); else if (d>=35 && d<40) System.out.println("肥満(3度)"+d); else System.out.println("肥満(4度)"+d); } }

  • ArrayList でスタックを

    初歩的でツマラナイかもしれません。 import java.util.ArrayList; でスタックを実現するクラス"MyStack"を書きました。 フィールドは private ArrayList<Integer> stack = new ArrayList<Integer>(); のみという条件です。 MyStack.java - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - import java.util.ArrayList; public class MyStack {   private ArrayList<Integer> stack = new ArrayList<Integer>();      // データを先頭に追加   public void push( int item ) {     stack.add( item );   }   // 先頭のデータを取り出す   public int pop( ) {     int rtn;     if( stack.isEmpty() ) {       System.out.println( "スタックは空です." );       System.exit( 1 );     }          rtn = stack.get( 0 );     stack.remove( 0 );     return rtn;   } } このMyStackを実行するクラス"MainForMyStack"を書きます。 実行結果は、標準出力に 43210 と出ることを想定しています。 MainForMyStack.java - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - import java.util.ArrayList; public class MainForMyStack {   public static void main(String[] args) {     MyStack stack = new MyStack();     // 0,1,2,3,4 をスタックに追加     for( int i=0; i < 5; i++ ) {       stack.push( i );     }     // スタックのデータを先頭から取り出す     for( int i=0; i < stack.size(); i++ ) {       System.out.print( stack.pop() );     }   } } さて、MainForMyStack.java の i < stack.size(); の箇所でエラーが出るのはなぜでしょう? どなたかご教授の方お願いします。

    • ベストアンサー
    • Java
  • dokojavaでシンボルerrorがでます。

    -------------------------------------isbn978-4-8443-3638-9 public class Main { public static void main(String[] args){ System.out.println("運勢"); int fortune = new java.util.Random() .nextInt(4) + l; if (fortune == 1) { System.out.println("大吉"); } else if (fortune == 2){ System.out.println("中吉"); } else if (fortune == 3){ System.out.println("吉"); } else{System.out.println("凶"); } } } ----------------------------------- int fortune = new java.util.Random() .nextInt(4) + l; ↑の最後の「l;」がみつかりませんとシンボルerrorになります。

  • 得点を表示するクラス

    class Tokuten { private int id; private String name; private int eng; private int math; private int sci; Tokuten(int i,String nm,int e,int m,int k) { id=i;name=nm;eng=e;math=m;sci=k; } void show() { System.out.println("("+id+","+name+","+ eng+","+ math+","+ sci+")"); } } public void push(Tokuten tokuten) { if(sp!=tokutens.length) { tokuten.show(); System.out.println("push"); students[sp++]=student; } else { System.out.println("Stack is full"); } } class Sample { public static void main(String[] args) { Stack ss=new Stack(0); ss.push(new Tokuten(1,"Jiko",72,80,68)); (Tokuten)(ss.pop()).show(); } 下記のような得点の表を表示したいのですがうまくいきません set Dataという得点を受け取って各フィールドに格納するやり方が分からないのでエラーばかり出るのだと思います、どなたかソースなどお教えくださると助かります

    • ベストアンサー
    • Java
  • if文にて…。

    public class Sample{ public static void main (String[] args){ if(player1.hp < 0) { System.out.println("(+_+)"); }else if(hp <= 10){ System.out.println("(T_T)"); }else if(hp <= 100){ System.out.println("(^^)"); }else{ System.out.println("(^-^)"); } CharData player1 = new CharData("ジャガー",250,20); CharData player2 = new CharData("ハマー",10,30); System.out.println("NAME:"+player1.name); System.out.println("HP:"+player1.hp); System.out.println("MP:"+player1.mp); System.out.println("NAME:"+player2.name); System.out.println("HP:"+player2.hp); System.out.println("MP:"+player2.mp); } } このようなプログラムを作成してコンパイルしようとしても、 if(player1.hp < 0)と }else if (hp <= 10){ }else if (hp <= 100){ のplayer1のpとhpのhのところに ^ のマークがありシンボルを解決できません。と出てコンパイルが通りません。 どのようにすれば通るようになるのか教えてください。

    • ベストアンサー
    • Java
  • return文が指定されていませんと出てくる

    javaの、というかパソコンの超初心者です。 じゃんけんゲームを作るのに、変数「3」を入力したらループから出て終了してもらえるように下記の文のelse if ~を追記したところ、これまでコンパイルできていたのに You.java:24: エラー: return文が指定されていません } と出てきてしまいます。 return;やreturn true; 、false等入力したものの変わらず、何をどこに追記すればいいのかわからないままです。 とてつもなく初歩的な部分かと思いますがどなたかご教授いただけますでしょうか... import java.util.*; public class You extends Player { public Hand nextHand() { Scanner scanner = new Scanner(System.in); while (true) { System.out.print("何を出しますか? グー:0 チョキ:1 パー:2 終了:3 > "); try { int hand_number = Integer.parseInt(scanner.nextLine()); if (0 <= hand_number && hand_number <= 2) { return Hand.fromInt(hand_number); } else if (hand_number == 3){ System.out.println("終了します。"); break; } else { System.err.println("範囲外の数字が入力されています。"); } } catch (NumberFormatException e) { System.err.println("数字以外が入力されています"); } } } }

  • javaのコンパイルエラーについてです。

    「これならわかるJava」という本でjavaを勉強してます。 以下のソースコードをコンパイルした所、 「注:DogList.java の操作は、未チェックまたは安全ではありません。 注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください」 と、表示されます。 ネットで色々と調べてみましたが上手く行きません。 よろしくお願い致します。 import java.io.*; import java.util.*; class Dog { private String name; private int energy; public Dog(String n, int e){ name = n; if(e < 0) e = 0; energy = e; } public Dog(){ this("未定",50); } public void bark(){ if(energy == 0){ System.out.println("お腹が減ってほえられないよ。"); return; } System.out.println("わん、わん!"); energy--; } public void intro(){ System.out.println("僕の名前は" + name + "だ。わん。"); System.out.println("エネルギーは" + energy +"だ。わん。"); } public void eat(int e){ if(e < 0){ System.out.println("マイナスは与えられません。"); return; } energy += e; } public String getName(){ return name; } public void setName(String n){ name = n; } public int getEnergy(){ return energy; } public void setEnergy(int e){ if(e < 0) e = 0; energy = e; } public String toString(){ return "僕の名前は" + name + "だ。わん。\n" +"エネルギーは" + energy + "だ。わん。" ; } } class DogList { public static void main(String[] args) throws IOException { Vector dogs = new Vector(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str, name; int n, energy; for(;;){ System.out.println("名簿:どうしますか?"); System.out.println("1 一覧 2 追加 3 終了"); str = br.readLine(); n = Integer.parseInt(str); if(n == 1){ for(int i = 0; i < dogs.size(); i++){ ((Dog)dogs.elementAt(i)).intro(); System.out.println("-----"); } } else if(n == 2){ System.out.println("名前を入力:"); name = br.readLine(); System.out.println("エネルギーを入力:"); str = br.readLine(); energy = Integer.parseInt(str); dogs.addElement(new Dog(name, energy)); } else{ break; } } } }

    • ベストアンサー
    • Java
  • &と|の演算子を使ったif文のプログラムについて

    ↓のプログラムの実行結果について質問します。 public class Test{ public static void main(String args[]){ if(methodA() & methodB() ){ System.out.print(1); }else{ System.out.print(2); } if(methodA() | methodB() ){ System.out.print(3); }else{ System.out.print(4); } } private static boolean methodA(){ System.out.print("A"); return false; } private static boolean methodB(){ System.out.print("B"); return true; } } 上記のプログラムを実行すると AB2AB3 と出力されるのですが、 何故こういう風になるのか教えていただけませんか? また、if文の中をそれぞれ if(methodA() & methodB() ) if(methodA() | methodB() ) と書き換えると A2A3 となるのですが、これについてもイマイチよく分かりません。 メソッドからfalseとtrueを戻り値として受け取り 演算子によって処理を分けているんでしょうけど、 どういう流れで処理が行われているのか 出力結果を見ても読めなくて・・・

    • ベストアンサー
    • Java
  • 配列を使った・・・。

    配列を使って簡単な迷路を作っているのですが、なかなかうまくいきません。 0を" "1を"■"を表示させたいのですがうまくいきません。 何処を直せばいいのか教えてください。 public class Sample1 { public static void main (String[]args) { int [][] data = { {1,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1}, {1,0,1,1,0,0,0,1,1,1,0,1,1,1,1,1,0,1,1,1}, {1,0,0,0,0,1,0,0,0,1,0,0,0,1,1,1,0,1,1,1}, {1,1,1,1,1,1,1,1,0,1,0,1,0,1,1,0,0,1,1,1}, {1,1,1,1,1,0,0,0,0,1,0,1,0,0,0,0,1,1,1,1}, {1,1,1,1,1,0,1,1,0,0,0,1,1,1,1,1,1,1,1,1}, {1,1,1,1,0,0,1,1,0,1,0,1,1,1,0,1,1,1,1,1}, {1,1,1,1,0,1,1,1,1,1,0,1,1,1,0,0,0,1,1,1}, {1,1,1,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1}, {1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1} }; for (int i=0; i<10; i++) { for (int j=0; j<20; j++) { System.out.print(data [i][j]); } if(data [i][j] = 1){ System.out.println("■"); }else{ System.out.println(" "); } } } }

    • ベストアンサー
    • Java

専門家に質問してみよう