【JAVA】変数の値を変更

このQ&Aのポイント
  • このプログラムを実行すると、「15」となるそうです。
  • 初心者としては、一行目のint value = 10;の値を「15」に書き換える方がわかりやすいです。
  • なぜ上書きで書き換えずに、下に追加するのか気になります。
回答を見る
  • ベストアンサー

【JAVA】変数の値を変更

ささやかな質問なのですが、 int value = 10; value = 15; System.out.println(value); このプログラムを実行すると、「15」となるそうです。 これは、最初に書いたらint value = 10; は 二行目の15に書き換えられたのですよね。 そもそもこんな回りくどい事をせずに、一行目のint value = 10;の値を「15」に書き換えて int value = 15; System.out.println(value); と訂正した方がいいのに・・・と初心者としては思うのですが、どうして 上書きで書き換えたりせずに、下にわざわざ付け足すのでしょうか? 宜しくお願い致します。

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

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

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

質問文にある内容ならば、もちろん最初からint value = 15;とすればいいです。正しいです。 ただ、この先勉強が進んで int value = 10; if (何らかの条件) { value = 15; } System.out.println(value); のような形のコードが出てきたとき、int value = 10;で一度値を代入した変数を後から書き換えてもいいんだということを示していると思えばいいでしょう。

sackyna
質問者

お礼

お礼が遅くなってしまい、ごめんなさい! とても助かりました★ ありがとうございました。

その他の回答 (1)

  • root139
  • ベストアンサー率60% (488/809)
回答No.2

何かの参考書の内容でしょうか? 変数は最後に代入した値になることを示したかっただけでは? 参考書などでは、説明の都合上、回りくどいコードになることはよく有ると思いますよ。 同じ結果を得るには下記の様にやるのが一番簡単でしょうが、これでは変数の説明になりませんよね。 System.out.println(15);

sackyna
質問者

お礼

お返事遅くなり、ごめんなさい。 参考にさせて頂きます、ありがとうございました!

関連するQ&A

  • Java初心者です。宜しくお願い申し上げます。

    Javaの初級者で型変換の箇所です。 コードは public class Sample5_5 { public static void main(String[] args) { long longValue=1; int intValue=2; short shortValue=3; byte byteValue=4; System.out.println("最初の値"); System.out.println(longValue); System.out.println(intValue); System.out.println(shortValue); System.out.println(byteValue); longValue=intValue; intValue=shortValue; byteValue=(byte)shortValue; longValue=intValue; System.out.println("代入後の値"); System.out.println(longValue); System.out.println(intValue); System.out.println(shortValue); System.out.println(byteValue); } } 実行は 最初の値 1 2 3 4 代入後の値 3 3 3 3 ------------------ (program exited with code: 0) Press return to continue 代入後の値が何故 3 3 3 3 となるか解りません。 どなたか解説してもらえませんか? ご多忙中恐縮です。 ご回答の程宜しくお願い申し上げます。

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

    java初心者です。 イクリプスを使って、以下文のようなプログラムを実行しようとしたのですが、何度も「エディターにはメイン型が含まれていません」という画面が出てきて実行してくれません。 分かりやすい解決策をお待ちしています。よろしくおねがいします。 1class Sample1 2{ 3public static void main(String args[]) 4{ 5int num1=2; 6int num2=3; 7int sum =num1+num2 8 9System.out.prtintln("変数num1の値は"+num1+"です。"); 10System.out.prtintln("変数num2の値は"+num2+"です。"); 11System.out.prtintln("num1+num2の値は"+sum+"です。"); 12 13num1= num1+1; 14 15System.out.prtintln("変数num1の値に1をたすと"+num1+"です。"); 16} 17} 以上

  • 参照・値渡しについて

    下記プログラム(ソース1)を実行すると「1」という値が出力されます。しかし、2行目をprivate static int a;とすると「0」という値が出力されます。 オブジェクトは参照渡しで基本データ型は値渡しと思ったのですが、2行目の値をString型で行ったところ全く変更されていない値が出力されました。(ソース2) 一体どういうことでしょうか? 回答のほどよろしくお願い致します。 (ソース1) public class X{ private static int a[] = new int[1]; public static void main(String []args){ modify(a); System.out.println(a[0]); } public static void modify(int a[]){ a[0]++; } } (ソース2) public class X{ static String a = "a"; public static void main(String []args){ modify(a); System.out.println(a); } public static void modify(String a){ a = "b"; } }

    • ベストアンサー
    • Java
  • 配列の値の参照について

    下記のプログラムの-------------で囲まれた部分が、コンパイルは通るのですが実行すると"value[1][0]"以降が参照できません(ここではcount=3 となっています)。 for文を使わずに"System.out.println(value[1][0])"とすると値を取り出せるのですが…。 実行時のエラーは Exception in thread "main" java.lang.ArrayIndexOutOfBoundException: 3 です。 ソースコードをそのまま載せて長文になってしまい申し訳ありません。 プログラム初心者なので、些細なことでもいいので回答お願いします。 import java.util.*; import java.io.*; public class Search { static String dataFileName = "CityData.txt"; ArrayList<String> array = new ArrayList<String>(); GetDataCount gdc = new GetDataCount(dataFileName); int count = gdc.getCount(); int count2 = 0; String[][] value = new String[count][3]; public Search(String dataFileName){ try{ BufferedReader reader = new BufferedReader( new FileReader(dataFileName) ); String line = ""; while((line = reader.readLine()) != null){ Vector<String> variable = readLine(line); System.out.println(variable); count2++; } }catch(IOException e){ System.out.println(e); } //---------------------------------------------------------- for (int i=0; i<count2; i++){ for (int j=0; i<3; j++){ System.out.println(value[i][j]); } } //---------------------------------------------------------- } public Vector<String> readLine( String line ){ StringTokenizer st = new StringTokenizer( line, "," ); Vector<String> variable = new Vector<String>(); for( int i=0 ; i<3 ; i++ ){ String data = st.nextToken(); variable.addElement( data ); value[count2][i] = data; System.out.println(value[count2][i]); } return variable; } public class GetDataCount{ int count = 0; public GetDataCount(String dataFileName){ try{ BufferedReader reader = new BufferedReader( new FileReader(dataFileName) ); String line = ""; while((line = reader.readLine()) != null){ count++; } }catch(IOException e){ System.out.println(e); } } public int getCount(){ return count; } } public static void main(String[] args){ new Search(dataFileName); } }

  • Javaの型変換について初心者向けに説明

    数日前からIT業界に転職をして、今Javaの勉強をしています。本当に初心者でテキストの意味がわからないところがあり、質問をさせていただきます。 テキストで異なる種類の型に代入しているコードがあるのですが、代入後の値の実行結果がなぜそうなるのかわかりません。 本当に初歩的な質問で申し訳ないのですが、どなたか噛み砕いて実行結果になるまでの経過を辿った説明をしていただけませんでしょうか。 ○異なる種類の型に代入しているコード public class Sample5_5 { public static void main(String[] args) { long longValue = 1; int intValue = 2; short shortValue = 3; byte byteValue = 4; System.out.println("最初の値"); System.out.println(longValue); System.out.println(intValue); System.out.println(shortValue); System.out.println(byteValue); longValue=intValue; intValue=shortValue; byteValue=(byte)shortValue; longValue=intValue; System.out.println("代入後の値"); System.out.println(longValue); System.out.println(intValue); System.out.println(shortValue); System.out.println(byteValue); ○実行結果 最初の値 1 2 3 4 代入後の値 3 3 3 3 この代入後の値がなぜ全て3になるのかわかりません。 宜しくお願いいたします。

    • ベストアンサー
    • Java
  • プログラミングお願いします(JAVA)

    クラスCalcに、次の5つのメソッドを作成しなさい。メインメソッドでオブジェクトを生成し、メソッドを呼び出して、実行しなさい。 二つの整数を引数にもち、その和を戻り値とする wa (メソッド名はwaであることに注意!以下同様。) 二つの整数を引数にもち、その差を戻り値とする sa 二つの整数を引数にもち、その積を戻り値とする kake 二つの整数を引数にもち、その大きい方を戻り値とする max 二つの整数を引数にもち、その小さい方を戻り値とする min した自分が実行したプログラムです。ここまでしかわからないので簡単にお願いします class Calc { int wa; int sa; int kake; int max; int min; int num; int num1; int getWa() { System.out.println("和を調べました"); return num+num1; } int getSa() { System.out.println("差を調べました"); return sa; } int getKake() { System.out.println("積を調べました"); return kake; } int geMax() { System.out.println("大きいほうを調べました"); return max; } int getMin() { System.out.println("小さいほうを調べました"); return min; } void setwasakakemaxmin(int w,int s ,int k,int ma,int mi) { wa=w; sa=s; kake =k; max=ma; min=mi; System.out.println("和を"+wa+"差を"+sa+"積を"+kake+"大きいほうを"+max+"小さいほうを"+min+"にしました"); } } class Sample3 { public static void main(String[] args)throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Calc car1=new Calc(); String str=br.readLine(); int num = Integer.parseInt(str); String str1=br.readLine(); int num1 = Integer.parseInt(str1); int wa=num+num1; int wa =car1.getWa(); Calc car1 =new Calc(); car1.setWaSaKakeMaxMin(1,2); int wa =car1.getWa(); int sa =car1.getSa(); int kake=car1.getKake(); int max =car1.getMax(); int min=car1.getMin(); System.out.println("Birthdayを調べたところ"); System.out.println("和は"+wa+"差"+sa+"積は"+kake+"大きいほうは"+max+"小さいほうは"+min+"でした"); } }

  • プログラミング(Java)について

    学校の課題で考えても、分からなかったので質問させてください。 下のプログラムを以下のように変更したいのです。 (1)正解の数から±20以下まで接近した時は「小さすぎます、でもあと少しです!!」または「大きすぎます、でもあと少しです!!」というメッセージを表示する。 (2)正解が出るまでに何回数字を入力したか数えて、正解が出た後で「正解が出るまで○○回かかりました」というメッセージを表示する。 (3)さらにその回数が5回以下だったら「すばらしい!」、その回数が10回以上だったら「間が鈍いですね」、5回と10回の間だったら「普通です」というメッセージを表示する。 import java.util.Scanner; public class kazuate{ public static void main(String args[]){ Scanner kbd = new Scanner(System.in); int x; boolean flag = true; int seikai = (int)(Math.random() * 1000); System.out.println("数当てゲームを始めます"); System.out.println("0~999の数字を入力してください"); while(flag){ x = kbd.nextInt(); if (x >= 0 && x < seikai){ System.out.println("小さすぎます、もう1回!"); }else if(x > seikai && x <= 999){ System.out.println("大きすぎます、もう1回!"); }else if(x == seikai){ System.out.println("正解です!"); flag = false; }else{ System.out.println("入力するのは0~999です。やり直してください"); } } } よろしくお願いします。

  • JAVA初心者です 教えてください

    http://nobuo-create.net/java-beginner-6/ ページの ----------------------------------------------------------------- では、実際に11時から17時に「こんにちは」と挨拶するように条件式とブロックの中を埋めます。 (mainメソッドの中のみ表記) int time = 8; if((time >= 4) && (time <= 10)){ System.out.println("只今の時刻は" + time + "時です"); System.out.println("おはようございます"); }else if((time >= 11) && (time <= 17)){ System.out.println("只今の時刻は" + time + "時です"); System.out.println("こんにちは"); } 中身のプログラムは数字と挨拶を変えるだけですね。 ------------------------------------------------------------------- の「}else if((time >= 11) && (time <= 17)){」で疑問が浮かんでつまづきました。 time >= 11ではtime(8)が11以上という演算子になってfalseになり、else if文は実行されないのではないでしょうか? (time <= 11) && (time <= 17)と書くのではないのでしょうか?

    • ベストアンサー
    • Java
  • JAVAのコンパイルについて教えてください。

    public class exam05d { public static void main(String[] args) { int value=args[0]; if(value==0) { System.out.println("valueの値は0"); } else { System.out.println("valueの値は0以外"); } } } 上記のプログラムをコンパイルすると exam05d.java:3: 互換性のない型 検出値:java.lang.String 期待値:int int value=args[0]; というエラーが出てしまいます。 これを正常に動作させるにはどう改良すれば良いか教えて頂けないでしょうか。 また変更を行わなければならない理由も教えていただけると有難いです。 プログラミングを始めたばかりで行き詰っています。 回答お待ちしております。

  • プログラミング(JAVA)について

    2つほど質問があります。どなたか回答していただける方がいたらお願いします。 1、以下のじゃんけんゲームのプログラムを作成したのですがfor文を用いてコードを短くするにはどうすればいいですか?      class jyanken { public static void main(String[] args) { int x = 0, y = 0; if (args[0].equals("グー")) { x = 0; } else if (args[0].equals("チョキ")) { x = 1; } else if (args[0].equals("パー")) { x = 2; } else { System.out.println("エラー"); } y = (int)(Math.random() * 10.0) % 3; if (x == 0) { if (y == 0) { System.out.println("あいこ"); } else if (y == 1) { System.out.println("勝ち"); } else if (y == 2) { System.out.println("負け"); } } else if (x == 1) { if (y == 1) { System.out.println("あいこ"); } else if (y == 2) { System.out.println("勝ち"); } else if (y == 0) { System.out.println("負け"); } } else if (x == 2) { if (y == 2) { System.out.println("あいこ"); } else if (y == 0) { System.out.println("勝ち"); } else if (y == 1) { System.out.println("負け"); } } } } 2、もう1パターンでじゃんけんプログラムを作成しようと考えているのですが。上手くできないので参考のファイルを掲示してもらえると嬉しいです。 機能としては、for文とif文を使用して。プログラムの起動と同時に、コンピュータがグー、チョキ、パーをランダムに出す(プレーヤに見せない) 次に人がグー、チョキ、パー何を出すかをキーボードで入力して最後にプログラムが出したものとコンピュータがランダムに出したものと比較し、勝負を表示する。といった感じです。

専門家に質問してみよう