書き出し以外理解不能です。部分的には少し分かるのですがもお手上げ状態です。

1. クラス名は、Test1クラスとし、このクラスにメインメソッドを実装する。
2. アプリケーションを起動すると、数値の入力を促すメッセージ(1)を表示し、文字列が入力されるのを待機する。

3. 標準入力から文字列を取得し、その文字列をint型の数値に変換する。

4. 入力された文字列が数値ではない場合は、例外(NumberFormatException)が発生した場合に、メッセージ(3)を表示し、アプリケーションを終了する。

5. 倍数を表示できる数値の範囲は、2以上100未満とし、範囲外の数値が入力された場合にはメッセージ(4)を表示し、アプリケーションを終了する。

6. 処理を開始するメッセージ(2)を表示し、入力された数値の倍数を画面(標準出力)に20個表示する。それぞれの数値は、タブ(¥t)で区切り、5個表示する度に改行を入れる。

7. 倍数は、0を含めて表示を行うこと。 (例) 3の倍数(0 3 6 9… 54 57)

メッセージ名 メッセージ内容
メッセージ(1)
数値を入力してください(半角数字) :

メッセージ(2)
[標準入力から取得した数値]の倍数を表示します。

メッセージ(3)
半角数字で数値を指定してください。

メッセージ(4)
[標準入力から取得した数値]の倍数は表示できません。0から100までの数値を指定してください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

/* Test1.java */


import java.io.Console;

public class Test1
{
static final int MIN = 2;
static final int MAX = 99;
static final int COLUMN = 5;
static final int DISP = 20;

public static void main(String[] args) {
Console c = System.console();

c.printf("数値を入力してください(半角数字) :");
String s = c.readLine();

try {
int x = Integer.parseInt(s);

if (MIN <= x && x <= MAX) {
c.printf("[標準入力から取得した数値]の倍数を表示します。\n");
for (int i = 0; i < DISP; i++) {
int pos = i % COLUMN;
if (pos == 0) {
/* 行頭書式 */
c.printf("%d", x * i);
/* 数値の桁揃えをする場合は c.printf("%4d", x * i); */
}
else if (pos != (COLUMN - 1)) {
/* 行中書式 */
c.printf("\t%d", x * i);
/* c.printf("\t%4d", x * i); */
}
else {
/* 行末書式 */
c.printf("\t%d\n", x * i);
/* c.printf("\t%4d\n", x * i); */
}
}
} else {
c.printf("[標準入力から取得した数値]の倍数は表示できません。0から100までの数値を指定してください。\n");
}
}
catch (NumberFormatException e) {
c.printf("半角数字で数値を指定してください。\n");
return ;
}
}
}

あとがき
これはよくある演習問題です。
・if 文, for 文, try - catch - finally 文の組み合わせ方
・比較演算子、論理演算子の組み合わせた if 文の組み合わせ方
・入出力命令の組み合わせ方
・書式切替の書き方(剰余演算子の使い方(先頭判定、末尾判定、中間判定))

ただ、これ明らかにC言語ベースのやつを Java に転用したって感じですね。(標準入力、標準出力という単語が出てくるあたりなど)
たぶん、C言語の printf や scanf が使えなくてプログラムの学習に不向きだったのを、 Java が最近になってようやく、 printf, readLine を実装したためC言語用の教材を Java に転用したってことだろうけど。(過去の Java で標準(コンソール)入力は奇怪なものでしかないわけで、初心者の学習の妨げでしかない時代がありました。クラス、インスタンス、入出力ストリームとフィルタについては後で学ぶべき(接するべき)概念なのに、始めから奇怪な概念(ストレス)と接するという問題です。)
ちなみに、Java (Integer.parseInt) は全角数字を扱えるので、入力文字種を半角とすることにこだわる必要はないです。(C言語は半角数字で入力する必要がありました。)
    • good
    • 0

はじめまして。



以下答えです。書き方は個人差あるのであしからず。
ちょっと厳しいこと言うかもしれませんが、これは自分で考えて
解かないとだめだと思います。
まず教材を1からやり直してちゃんと理解しましょう。
それでも分からないのであれば教材を変えないとだめです。
どんな目的でプログラムを始めたかはわかりませんが
入門レベルですので、きちんと基礎をやらないと
自分が思ったものは作れませんよ。
がんばってくださいな。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test1 {

/**
* @param args
*/
public static void main(String[] args) throws IOException {
// 入力待ち
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("数値を入力してください(半角数字)");

// 入力した値を取得
String str = in.readLine();

int num;
try {
// int型に変換
num = Integer.parseInt(str);
} catch (NumberFormatException e) {
// 数値じゃない場合はメッセージを表示して終了
System.out.println("半角数字で数値を指定してください。");
return;
}

// 2以上100未満を判定
if (num < 2 || num >= 100) {
System.out.println(num + "の倍数は表示できません。2から100までの数値を指定してください。");
return;
}

System.out.println(num + "の倍数を表示します。");

// 入力値の倍数を20個表示する
for (int i = 0; i < 20; i++) {
System.out.print((num * i) + "\t");

// 改行入れる
if ((i + 1) % 5 == 0) {
System.out.println();
}
}
}
}
    • good
    • 0

1、2も判らないの…?



もう一度、教材を読み直した方が良い…。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング

おすすめ情報