• 締切済み

booleanについて

お世話になります。 javaを始めて10日程の初心者です。 boleanの使い方がよく分かりません。 例: public class a { public static void main(String[] args){ // "あなたは20歳以上ですか?(Yesならtrue、Noならfalse)"; boolean isAdult = true; if (isAdult) { System.out.print(" 成人です "); } else { System.out.print(" 子供です "); } } } これを実行すると、”成人です”が出力されます。 例えばbooleanを使用せずに int age; if(age>=20) { System.out.print(" 成人です "); } else { System.out.print(" 子供です "); } とすれば解決できるのですが、 booleanを使用しようとすると理解できなくなります。 宜しくお願いします。

  • Java
  • 回答数4
  • ありがとう数0

みんなの回答

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

> てことは↓のif文は意味なかったってことですよねぇ。(^^; 「trueをfalseにfalseをtrueに逆転」してしまうと、意味はないですね。 (「trueをfalseにfalseをtrueに逆転」しない元のプログラムではIF文の内容は意味があります。つまり、「trueをfalseにfalseをtrueに逆転」してしまうとプログラムが変わってしまいます。) > Exception in thread "main" java.lang.Error: Unresolved compilation problem: 訳:スレッド "main"内で例外:解決できないコンパイル問題 > break cannot be used outside of a loop or a switch 訳:breakは、ループもしくはswitchの外側では、使えません。 っとコンパイラがいってますよ。 >何がこんなに理解できないのか自分でもよく分からなくなってきました。 色々試しながら少しずつ理解するしかないかも。 >んーboleanで躓いてても前に進まないので、そのうち自然に理解できるだろうくらいに楽観的に考えて、とりあいず保留にしときます。  はい、もし理解ができなければ、今は保留でいいと思います。 例文などを見て、自分で打ち込み、少しずつ理解していけば、その内、理解できると思いますよ。 焦らずに、がんばって下さい。

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

>下記は、5科目の成績を入力して平均を出すプログラムです。 booleanは真と偽なので、 このプログラムでのbooleanの意味は、ユーザが成績を入力した時に負の数だったら、wrong=false(失敗)にし、終了させるプログラムのようです。 一般的に成績が負の数だった場合、平均値がおかしくなりますよね? このような判定処理(成功又は失敗)にBooleanを使用します。別にint型を使用して、wrong = 1(成功)/wrong = -1(失敗)でも可能ですけど。Booleanの方が、明示的に成功/失敗が分かるので良いと思います。実際、C言語ではBoolean型がないため、上述の通り、int型で代用していますよ >例えはtrueをfalseにfalseをtrueに逆転しても同じと思うんですが 同じでは、ないと思いますよ。 例えば、正の数を5回代入していった場合、wrong=falseのままです。 そうすると「if(wrong){ //例えばwrong=falseにする。」の処理の時に、「double avg=sum/5;」以下ではなく、Else文以下の「wrong=false; //例えばtrueにすると平均点が出力されない??」を実行されるため、『平均点を出力しません』が起こると思います。 (試しに、「if(wrong){ //例えばwrong=falseにする。」の前に「System.out.println("合計:"+sum);」を挿入してみてください。合計は正しく算出されると思います) >それと↑のwrong=false; の下にbreak;を置くと赤の波線になります。・・・ エラー表示を教えてください。

inuoyogi7
質問者

補足

丁寧なご回答ありがとうございます。 DiveKoさんが言われる通り、「System.out.println("合計:"+sum);」をif文の前に置いても正しく算出されました。 てことは↓のif文は意味なかったってことですよねぇ。(^^; if(wrong){ //double avg=sum/5; //System.out.println("平均点:"+avg); } else{ wrong=false;         } それと、break;を置いた時のエラー表示、下記の通りです。 Exception in thread "main" java.lang.Error: Unresolved compilation problem: break cannot be used outside of a loop or a switch at A.main(A.java:23) booleanやっぱりまだしっくりきません。 何がこんなに理解できないのか自分でもよく分からなくなってきました。 色々試しながら少しずつ理解するしかないかも。 んーboleanで躓いてても前に進まないので、そのうち自然に理解できるだろうくらいに楽観的に考えて、とりあいず保留にしときます。 ありがとうございました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

boolean のデフォルトの初期値は false です. だから boolean isAdult; と boolean isAdult = false; は同じ意味です.

inuoyogi7
質問者

補足

回答ありがとうございます。 度々申し訳ありませんが、やはりbooleanの使い方、よく理解できてないように思います。 下記は、5科目の成績を入力して平均を出すプログラムです。 booleanは真と偽なので、例えはtrueをfalseにfalseをtrueに逆転しても同じと思うんですが、コンパイルすると平均点を出力しません。 何故でしょうか? boolean wrong=true;   //例えばfalseにする。 double sum=0; for(int x=1;x<=5;x++){ System.out.print("第"+x+"科目の成績:"); double score=in.nextDouble(); if(score<0){ //負の数の時プログラム停止 wrong=false;       //例えばtrueにする。 break; } sum=sum+score; } if(wrong){ //例えばwrong=falseにする。 double avg=sum/5; System.out.println("平均点:"+avg); } else{ wrong=false;        //例えばtrueにすると平均点が出力されない?? } それと↑のwrong=false; の下にbreak;を置くと赤の波線になります。あえてbreak;を置く必要はないんですが、負の数の時はbreakすると言う意味で付け加えることは文法上は正しいと思うんですがそうじゃないようです。何故間違いなのか合わせて教えて頂ければ助かります。 宜しくお願いします。

  • nimua
  • ベストアンサー率21% (8/38)
回答No.1

booleanとは真偽値です。 つまり成人かどうかを求める計算式「age >= 20」の結果と同じ内容が 格納されていいます。 表現を変えると、 boolean isAdult = (age >= 20); このようになります。 「age >= 20」の結果がtrueになるのか、falseになるのか、 そういう情報を保持するデータ型です。

inuoyogi7
質問者

補足

ご回答ありがとうございます。 確かにnimuaさんのおっしゃるようにしたら解決できました。 nimuaさんの語句を分析すると、 boolean isAdult = (age >= 20);     →boolean (変数名) = (条件); となっています。 例えば (1) boolean isAdult; (2) boolean isAdult=true; (3) boolean isAdult=false; このようなときは、 (1) boolean isAdult;は真ですか?偽ですか? もし(1)が真だとすれば(1)と(2)は同じ意味?ですか? まだ理解できていないのでこの質問そのものがおかしいかもしれません。 お手数ですが返答頂きたいです。

関連するQ&A

  • boolean型

    class Bool {   static boolean b;   public static void main(String [] args) {     int x=0;     if (b ) {       x=1;     }     else if (b = false){       x=2;     }     else if (b){       x=3;     }     else {       x=4;     }     System.out.println("x = " + x);     System.out.println(b=false);   } } SUNのサイトにあった「どのような結果になるか」と言う問題なのですが、8行目の if(b=false) の部分がifの括弧の中はBoolean型じゃないといけないのに 代入してるからコンパイルエラーだなとおもったのですが あっさりコンパイルは通ってx=4と言う出力です・・・ (b=false) と言うのはどのようにコンパイルされているのですか?? なぜ 代入が、BooleanとしてOKなのでしょうか??

    • ベストアンサー
    • 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
  • 変数booleanの扱い方

    下記のコードでコンパイルしたところ、出現 int 互換性のない型 要求:boolean boolean bl = 0 ; とエラーが出ました。コード上でまず、bl = 0 と0が入るのがまず分からないのと、trueとfalseを入れ換えているのがわかりません。すみませんが、かなりわかってないので、出来るだけ詳しく説明お願いします。 boolean bl = 0; for(int i=0; i<5; i++) for(int j=0; j<5; j++) if(bl == false){ System.out.print('*'); bl = true; } else{ System.out.print('-'); bl = false; } } お決まりのクラス宣言などのコードは省きました。

    • ベストアンサー
    • Java
  • booleanの戻り値について

    配列の等価判定をしたいのですが思うように動かないです。 助けてください import java.io.*; class Kadai4 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] TBL1; int[] TBL2; TBL1 = new int[5]; TBL2 = new int[5]; boolean flg=true; System.out.println("配列1を入力"); for (int i = 0; i <= 4; i++) { String s1 = br.readLine(); int t1 = Integer.parseInt(s1); TBL1[i] = t1; } System.out.println("配列2を入力"); for (int i = 0; i <= 4; i++) { String s1 = br.readLine(); int t1 = Integer.parseInt(s1); TBL2[i] = t1; } // 配列表示 System.out.println("配列表示"); for (int i = 0; i < TBL1.length; i++) { System.out.print(" TBL1[" + i + "]=" + TBL1[i]); } System.out.println(""); for (int i = 0; i < TBL2.length; i++) { System.out.print(" TBL2[" + i + "]=" + TBL2[i]); } toka(TBL1, TBL2); System.out.println(""); if (flg == true) { System.out.println("配列は等価"); } else { System.out.println("配列は非等価"); } } private static boolean toka(int[] ss1, int[] ss2) { boolean flg = true; for (int i = 0; i < ss1.length; i++) { if (ss1[i] != ss2[i] || ss1.length != ss2.length) { flg=false } } return flg; } }

  • boolean型ではなくて

    booleanの2つの値を取る変数ではなく、3つの値を取れる変数ってあるのでしょうか?booleanを2つ使用した場合もやってみたのですがうまく動きませんでした。先に次のようにbooleanを記述して。 boolean state=true; boolean state1=true; boolean state2=true; 後半部分で次のようにやってみたのですが、3値とったことにはならないですかね?(^^; if(state)     {      if(state1){buffer=img2;}      else{buffer=img3;}      if(state2){buffer=img4;} else{buffer=img5;}     } else{} g.drawImage(buffer,0,0,null); state1 = !state1; state2 = !state2;

    • ベストアンサー
    • Java
  • javaプログラムについて

    mainメソッド内の指定された部分の処理を、 別のメソッドに分けてください。 mainメソッド内から作成した別メソッドを呼び出して 実行できるようにしてください。 ※分ける前と分けた後で処理結果が変わらないこと (入力された文字が"A"の場合true, それ以外の場合falseを返すように) */ class MethodAdd1{ public static void main(String[] args){ /* // ★ここから if("A".equals(args[0])){ judge = true; }else{ judge = false; } // ★ここまで */ boolean judge; if("A".equals(args[0])){ System.out.println("true"); }else{ System.out.println("false"); } } /* **戻り値:boolean **引数:String */ //ここにメソッドを作成 public static boolean equals(String a){ String str="A"; if("A".equals(str)){ return true; }else{ return false; } } } これで一応trueかfalseと表示されるのですが、合っているのか分かりません。 お時間のある方で、手直しをして頂ける方お願い致します。

  • Javaのif文がわかりません!

    public class If2 {   static boolean b1, b2;   public static void main(String[] args) {     int x = 0;     if ( !b1 ) {     if ( !b2 ) {       b1 = true;       x++;       if ( 5 > 6) {         x++;       }       if ( !b1 ) x = x + 10;       else if ( b2 = true ) x = x + 100;       else if ( b1 | b2 ) x = x + 1000;       }     }     System.out.println(x);    }  } ------------------------------------------------------------ 正常にコンパイルされ、101とでます。 if文の()内にある!b1というのが意味が分かりません^^; 2行目でb1とb2はfalseになるのは分かりましたが !b1や!b2はfalseではない!ということですか? 誰か教えてください!よろしくお願いします!!

  • 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文を使っているのに繰り返しがとまらず永遠に回答が流れてしまいます。なぜでしょうか?

  • intではなくStringで・・・

    こんなソースがあります。。 public class Check { public static void main(String[] args) { int i = Integer.parseInt(args[0]); if (i == 123) { System.out.println("あたり!"); } else if (i < 123) { System.out.println("はずれ!"); } else { System.out.println("おおはずれ!"); } } } これを、int型の文字を入力して判定させるのではなく、String型の文字で判定させたいのですが、 int i = Integer.parseInt(args[0]);をどう変えればいけるでしょうか? よろしくお願いします!

    • ベストアンサー
    • Java
  • Javaプログラムの間違いを見つけてください

    下記のプログラムをマニュアル通りに入力したのですが、おそらくマニュアルにミスがあったのでしょう。どこが間違っているのか教えてください。よろしくお願いしますm_ _m class kadai1710 { public static void main (String args []) { System.out.println(args[0]); if(Integer.parselnt(args[0]) == 1) System.out.println("男性"); else System.out.println("女性"); } }

    • ベストアンサー
    • Java