• ベストアンサー

JavaにはなぜGO TO 命令がないのでしょうか?

BetaNonaの回答

  • BetaNona
  • ベストアンサー率50% (1/2)
回答No.13

はっきり言ってまったくお勧めしたくありませんが、どうしてもelseが嫌だ!ということであれば、breakをgoto代わりに使うという手はあります。 do{  if(a > 0){   System.out.println("aは正の値です。");   break;  }  if(a == 0){   System.out.println("aはゼロです。");   break;  }  if (a < 0){   System.out.println("aは負の値です。");   break;  } }while(true); //breakでここに飛んで来る while(true)は今時のまともなコンパイラならまず実際の処理はしませんので、効率は問題ありません。

関連するQ&A

  • java 入力命令

    以下うまくどうさしません、教えてください。 public class Main { public static void main(String[] args){ System.out.println("名前"); String name = new java.util.Scanner(System.in) .nextLine(); System.out.println("年齢"); int age = new java.util.Scanner(System.in) .nextInt(); System.out.println (age + name); } }

  • Javaのコンストラクタについて教えてください

    Javaを勉強している初心者です。 次のようなプログラムがあります。 このプログラムでclass aおよびclass bのデフォルトコンストラクタ a() {}とb() {}をコーディングしていないとコンパイルエラーになります。 b() {}についてはclass bのパラメータのあるコンストラクタb(String s)がサブクラスclass cから明示的に呼ばれていないのでデフォルトコンストラクタb() {}をコーディングしないとエラーになる…と考えればよいのでしょうか。 それでは、a() {}はなぜ必要なのでしょうか。 どなたか教えてください。 class a { a() {} a(String s) { System.out.println("In a's constructor..."); System.out.println(s); } } class b extends a { b() {} b(String s) { super(s); System.out.println("In b's constructor..."); System.out.println(s); } } class c extends b { c(String s) { System.out.println("In c's constructor..."); System.out.println(s); } public void some() { System.out.println("something..."); } } public class appJ01 { public static void main(String args[]) { c obj = new c("Hello from 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」という本をつかって勉強を始めた者です。 最初からなにか上手くいかないので、アドバイスいただけたら嬉しいです。 public class Welcome{ public static void main(String[] args){ System.out.println("Welcome to Java!"); System.out.println("Javaの世界へようこそ!"); } } というソースを作りました。 これを javac Welcome.java とやって、そこまではよさそうなのですが、そのあと、 java Welcome をやったらエラーになります。 ソースも間違いないと思うのですが、よくわかりません。 ファイルの仕方に問題があるのかなとも思っています。 どうか、よろしくお願い致します。

    • ベストアンサー
    • Java
  • JAVAで素数判定

    JAVAの勉強をしてます 練習問題で、素数判定のプログラムをしているのですが。 1~14までの判定はうまくいきますが、15の判定の時に素数であると表示されて困ってます。どなたかわかりませんか? //読み込んだ数字 n が 15 の場合 if(n == 1) System.out.println("素数ではありません。"); if(n == 2) System.out.println("素数です。"); for (int i = 2; i < n; i++) { if (n % i == 0) { System.out.println("素数ではありません。"); break; } else { System.out.println("素数です。"); break; } } --結果---------------------------------------------- 素数です

    • ベストアンサー
    • Java
  • 下記のようなjavaのプログラムで、* や / を入力しても,

    下記のようなjavaのプログラムで、* や / を入力しても, 必ず判定がfalseのほうになるんですけど、どうすれば良いですか? あまりjavaには詳しくないので、分かりやすく教えていただければ幸いです。お願いします。 import java.io.*; public class test{ public static void main(String[] args) throws IOException{ BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); String a; a = input.readLine(); if((a == "*") ^ (a == "/")){ System.out.println("OK"); }else{ System.out.println("エラー"); } } }

    • ベストアンサー
    • Java
  • Javaのsubstringのendパラメータについて

    Javaでは、endパラメータが何故+1なのでしょうか? String a = "ABCDEFG"; System.out.println(a.substring(0,0+1)); // A System.out.println(a.substring(1,2+1)); // BC System.out.println(a.substring(3,5+1)); // DEF perlなどでは、以下のようだった気がしますが・・・ substring(a, 0, 0); substring(a, 1, 2); substring(a, 3, 5); 理由をご存知の方教えてください。 こういうのはJavaではよくあることででしょうか?

    • ベストアンサー
    • Java
  • go toに変わるもの

    go to文の他に、指定した行まで戻ったり、進んだり出来る構文ってあるんでしょうか?go to文はあまり使うなと、本などでは言われているので。 例えば、下記のような時にgo to文以外の構文を、あれば使いたい・・・。 /*-----------main.c--------------*/ int jump(void); void main(){    int a,b,ret;    scanf("%d %d",&a,&b); //(1)    if(a == 1 && b == 1){ //ここの条件は今適当に付けた       ret = jump();       if(ret != 1) ~~; //ここで(1)の処理に戻りたい。go to文以外で。    } } int jump(void){    int a,b;    scanf("%d %d",&a,&b);    return a+b; } 上記は、適当に組んだものなので細かい所は気にしないで下さい。 もし構文があるならば教えてください。よろしくお願いします。

  • javaで判別式のプログラミングを作りたいのですが

    javaで二次方程式ax2+bx+c=0が,2つの異なる実数解をもつ,実数の重解をもつ,実数解をもたないのいずれであるかを判別するプログラムを作りたいのですが、 何度実行しても正しい答えが出てくれません。なぜでしょうか? import java.util.Scanner; class Kadai { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int a,b,c,d; System.out.println("二次方程式y=ax^2+bx+cの解を判別します。"); System.out.print("aを入力してください。:"); a = sc.nextInt(); System.out.print("bを入力してください。:"); b = sc.nextInt(); System.out.print("cを入力してください。:"); c = sc.nextInt(); d=b^2-4*a*c; System.out.println("y="+a+"x^2+"+b+"x+"+c+"の判定は以下の通りです。"); if(d>0){ System.out.println("判別式D>0"); System.out.print("2つの異なる実数解をもつ。"); } if(d==0){ System.out.println("判別式D=0"); System.out.print("実数の重解をもつ。"); } if(d<0){ System.out.println("判別式D<0"); System.out.print("実数解をもたない。"); } } } これを実行すると下の画像のように異なる結果が出てしまいます。 この場合、正しくは実数の重解を持つですよね? どこが間違っているか指摘してくださると嬉しいですm(_ _)m

    • ベストアンサー
    • Java
  • Javaの初心者です

    Javaの勉強をしています。 以下のコードを作成しました。 import java.util.*; public class Main { public static void main(String[] args) { int flg = 0; Scanner sc = new Scanner(System.in); String str = sc.next(); String data = sc.next(); if (data == str) { flg = 1; } if (flg == 1) { System.out.println("YES"); } else { System.out.println("NO"); } } } 標準入力に A A を入力して実行しました。 YESと表示されるのを期待していたのですが、NOと表示されます。 何が悪いのでしょうか?

    • ベストアンサー
    • Java