Skip to content
Playground

演習: 式と演算子

各問題のコードは、Main クラスの main メソッドの中に書く前提です。

時速と走行時間から、走行距離を計算して出力してください。

double speed = 60.0; // km/h
double hours = 2.5;

出力例:

走行距離: 150.0km
ヒント

距離 = 速度 × 時間です。double * double の結果は double になります。

身長と体重から BMI(Body Mass Index)を計算して出力してください。BMI は 体重(kg) ÷ 身長(m)² で求められます。

double heightM = 1.70;
double weightKg = 65.0;

出力例:

BMI: 22.49134948096886
ヒント

身長を2回掛けるか、Math.pow(heightM, 2) を使います。

合計金額を人数で割り、一人あたりの金額と余り(端数)を出力してください。

int total = 3500;
int people = 3;

出力例:

一人あたり: 1166円
余り: 2円
ヒント

整数同士の / は商の整数部分を返します(小数点以下は切り捨て)。% で余りが求められます。

摂氏温度を華氏温度に変換して出力してください。変換式は 華氏 = 摂氏 × 9 ÷ 5 + 32 です。

int celsius = 25;

出力例:

華氏: 77.0度
ヒント

出力を 77.0 のような小数表示にするには、計算式のどこかで double を使う必要があります。9.0 / 5 のように書くか、(double)celsius をキャストすると、結果が double になります。

なお、celsius * (9 / 5) のように 9 / 5 を先に評価する書き方では、整数除算で 1 になり結果が大きくずれます(25 * 1 + 32 = 57)。

3-E. 文字列の比較(== と equals)

Section titled “3-E. 文字列の比較(== と equals)”

以下のコードについて、s1s2==equals の2通りで比較し、それぞれの結果を出力してください。

String s1 = "hello";
String s2 = new String("hello");

出力例:

== による比較: false
equals による比較: true
ヒント

==参照(メモリ上の同じオブジェクトか) を比較します。equals値(中身が等しいか) を比較します。new String("hello") は新しいオブジェクトを作るので、リテラル "hello" とはメモリ上の別の場所にあります。

文字列の比較には equals を使ってください。

なお、実務で new String("...") と書くことはまずありません(無駄なオブジェクトを作るだけ)。本問では ==equals の挙動の違いを観察するために、あえて参照が異なる状況を作っています。

入力されたパスワードが正しいかを判定し、結果を boolean で出力してください。大文字・小文字は区別しません。

String correctPassword = "Java2025";
String input = "JAVA2025";

出力例:

認証: true
ヒント

大文字・小文字を区別しない比較には equalsIgnoreCase メソッドが使えます。

3-G. 残高計算(複合代入演算子)

Section titled “3-G. 残高計算(複合代入演算子)”

口座の残高に対して入金・出金を行い、最終的な残高を出力してください。複合代入演算子(+=-=)を使ってください。

int balance = 10000;
int deposit = 5000;
int withdraw = 3000;

出力例:

残高: 12000円
ヒント

balance += depositbalance = balance + deposit と同じ意味です。同様に -= は減算の代入です。

商品名と価格を表形式で整形して出力してください。価格は3桁ごとのカンマ区切り、品名は左揃え、価格は右揃えで桁を揃えます。

String item1 = "ノート";
int price1 = 250;
String item2 = "鉛筆セット";
int price2 = 1200;
String item3 = "万年筆";
int price3 = 15800;

出力例:

ノート 250円
鉛筆セット 1,200円
万年筆 15,800円
ヒント

System.out.printf を使います。

  • %-12s で左揃え12文字の文字列
  • %,7d でカンマ区切り、右揃え7文字の整数
  • 改行は %n

例: System.out.printf("%-12s%,7d円%n", item1, price1);

なお、日本語文字の表示幅はターミナルによって異なるため、出力例と完全には揃わないことがあります。

3-I. 入場可能か判定(論理演算子)

Section titled “3-I. 入場可能か判定(論理演算子)”

年齢が18歳以上65歳未満で、かつ会員である場合に入場可、それ以外は入場不可とします。条件分岐は使わず、論理演算子の結果を boolean 変数に入れて出力してください。

int age = 30;
boolean isMember = true;

出力例:

入場可: true
ヒント

&& は両方が true のとき true です。条件は3つあるので && で連結します。

以下の計算結果を出力し、0.3 と等しいかを == と「絶対値が誤差範囲内かどうか」の2通りで判定してください。

double result = 0.1 + 0.2;

出力例:

result: 0.30000000000000004
result == 0.3: false
誤差範囲内: true
ヒント

浮動小数点数は内部的に2進数で扱われるため、0.10.2 を正確に表現できません。そのため 0.1 + 0.20.3 と完全には一致しません。

double の比較は、誤差を許容する判定をします。

Math.abs(result - 0.3) < 1e-9

1e-90.000000001 の意味で、許容できる誤差を表します。