「プロになるJava」の第2部「Javaの基本」の練習問題の解答です。
第3章 値と計算
3.2 値と演算
3.2.1 整数
1. 7+2を計算してみましょう
jshell> 7 + 2 $1 ==> 9
2. 7-2を計算してみましょう
jshell> 7 - 2 $2 ==> 5
3. 7×2を計算してみましょう
jshell> 7 * 2 $3 ==> 14
4. 7÷2を計算して整数部分の結果を出してみましょう
jshell> 7 / 2 $4 ==> 3
5. 7を2で割った余りを計算してみましょう
jshell> 7 % 2 $5 ==> 1
3.2.3 実数
- 7÷2を小数点以下の結果も出るように計算してみましょう
jshell> 7. / 2 $7 ==> 3.5
3.3 メソッドの呼び出し
3.3.2 文字列の掛け算や引き算?
掛け算の代わりにrepeat
メソッド
1. repeatメソッドを使って"test"を4回繰り返してみましょう
jshell> "test".repeat(4) $8 ==> "testtesttesttest"
引き算の代わりにreplace
メソッド
1. replace
メソッドを使って"test"
から"t"
を取り除いて"es"
が残るようにしてみましょう。
jshell> "test".replace("t", "") $9 ==> "es"
2. replace
メソッドを使って"test"
の"es"
を"alen"
に置き換えて"talent"
にしてみましょう。
jshell> "test".replace("es", "alen") $10 ==> "talent"
3.3.4 メソッドの使い方がわからないとき
1. 文字列の長さを返すメソッドがあります。Javadocから探して試しに呼び出してみましょう。
jshell> "test".length() $11 ==> 4
2. 文字列の一部を返すメソッドがあります。Javadocから探して「"test"」の2文字目以降を取り出して"est"を表示されるようにしてみましょう。
jshell> "test".substring(1) $12 ==> "est"
第4章 変数と型
4.1 変数
1. var
をつけて変数s
を使えるようにしてみましょう。
jshell> var s = "site" s ==> "site"
4.2 型
4.2.3 変数の型を指定する
1. 「var c = 5
」をvar
を使わずint
を使って書いてみましょう。
jshell> int c = 5 c ==> 5
2. 「var u = "UFO"
」をvar
を使わずString
を使って書いてみましょう。
jshell> String u = "UFO" u ==> "UFO"
3. 「var w = "watch"
」をvar
を使わずint
かString
のどちらかを使って書いてみましょう。
jshell> String w = "watch" w ==> "watch"
4. 「var d = 12
」をvar
を使わずint
かString
のどちらかを使って書いてみましょう。
jshell> int d = 12 d ==> 12
第5章 標準API
5.1 日付時刻
5.1.3 パッケージとimport
1. パッケージ名を省略して現在の日付を表示させてみましょう。
jshell> LocalDate.now() $2 ==> 2022-03-27
2. パッケージ名を省略して現在の時刻を表示させてみましょう。
jshell> LocalTime.now() $3 ==> 21:00:36.528563700
5.1.4 日付時刻の操作
1. LocalDateクラスを使って明日の日付を求めてみましょう
jshell> LocalDate.now().plusDays(1) $7 ==> 2022-03-28
2. LocalDateクラスを使って2週間後の日付を求めてみましょう
jshell> LocalDate.now().plusWeeks(2) $8 ==> 2022-04-10
5.1.6 日付時刻の整形
1. java17date変数に用意したJava17のリリース日を2021年09月14日
という形式で表示してみましょう。
jshell> "%tY年%<tm月%<td日".formatted(java17date) $11 ==> "2021年09月14日"
2. java17dateTime変数に用意したJava17のリリース日時を2021年09月14日 14時30分
という形式で表示してみましょう。
jshell> "%tY年%<tm月%<td日 %<tH時%<tM分".formatted(java17dateTime) $13 ==> "2021年09月14日 14時30分"
5.1.7 staticメソッドとインスタンスメソッド
1. LocalDateクラスを使って2020年2月28日の次の日を求めてみましょう
jshell> LocalDate.of(2020,2,28).plusDays(1) $14 ==> 2020-02-29
2. LocalDateクラスを使って2020年2月28日の2週間後の日付を求めてみましょう
jshell> LocalDate.of(2020,2,28).plusWeeks(2) $15 ==> 2020-03-13
文字列整形のformattedメソッドとformatメソッド
1. "%tm月".formatted(today)
をString.format
を使って書き換えてみましょう。
jshell> String.format("%tm月", today) $17 ==> "03月"
2. "%sは%d".formatted("two", 2)
をString.format
を使って書き換えてみましょう。
jshell> String.format("%sは%d", "two", 2) $18 ==> "twoは2"
3. String.format("%tY年", today)
をformatted
メソッドを使って書き換えてみましょう。
jshell> "%tY年".formatted(today) $19 ==> "2022年"
5.2 BigDecimal
5.2.2 BigDecimalでの計算
1. BigDecimal
クラスを使って119999×0.1を誤差なく計算してみましょう
jshell> BigDecimal.valueOf(119999).multiply(BigDecimal.valueOf(0.1)) $21 ==> 11999.9
5.2.3 newによるBigDecimalオブジェクトの生成
オブジェクト
1. 1.4142135623730950488×1.4142135623730950488を計算してみましょう。同じ数同士を掛けています。
jshell> var root2 = new BigDecimal("1.4142135623730950488") root2 ==> 1.4142135623730950488 jshell> root2.multiply(root2) $24 ==> 1.99999999999999999999522356663907438144
第6章 SwingでのGUI
6.1 Swingでのウィンドウ表示
6.1.2 ウィンドウを表示してみる
1. setLocationメソッドを使ってウィンドウを右に動かしてみましょう。
jshell> f.setLocation(300,200)
※ getLocationメソッドで得たx座標より大きい値を最初の引数に指定してください。
6.1.3 入力領域の配置
1. 入力領域に「Hello Swing」を表示してみましょう。
jshell> t.setText("Hello Swing")
6.1.4 ふたつめの入力領域
1. 上側の入力領域に入力された文字列を下側の入力領域に表示してみましょう
jshell> t2.setText(t.getText())
2. 上側の入力領域に入力された文字列の大文字を小文字に変換して下側の入力領域に表示してみましょう
jshell> t2.setText(t.getText().toLowerCase())
6.2 画面に絵を描いてみる
6.2.3 図形の描画
1. 左下から右上に向かって直線を描いてみましょう
jshell> g.drawLine(0, 400, 600, 0) jshell> label.repaint()
2. g.setColor(Color.BLUE)
として色が指定できるようにjava.awt.Color
クラスのimportを行ってみましょう
jshell> import java.awt.Color
3. 青く塗りつぶされた円を描いてみましょう
jshell> g.setColor(Color.BLUE) jshell> g.fillOval(50, 200, 150, 150) jshell> label.repaint()
6.3 Javaの基本文法
6.3.1 Javaの文法
名前の付け方のガイドライン
1. 「my bag」をクラス名にするとしたらどうなるか考えてみましょう。
MyBag
2. 「my bag」を変数名にするとしたらどうなるか考えてみましょう。
myBag
3. 「get bag」をメソッド名にするとしたらどうなるか考えてみましょう。
getBag
4. 「画面に絵を描いてみる」でやったことをプログラムにしてみましょう
package projava; import javax.swing.*; import java.awt.image.BufferedImage; import java.awt.Color; public class Drawing { public static void main(String[] args) { var f = new JFrame("drawing"); f.setVisible(true); var label = new JLabel("test"); f.add(label); var image = new BufferedImage(600, 400, BufferedImage.TYPE_INT_RGB); label.setIcon(new ImageIcon(image)); f.pack(); var g = image.createGraphics(); g.drawLine(0, 0, 600, 400); g.setColor(java.awt.Color.RED); g.fillRect(300, 200, 150, 100); g.drawLine(0, 400, 600, 0); g.setColor(Color.BLUE); g.fillOval(50, 200, 150, 150); label.repaint(); } }