import java.util.Scanner;
public class Ensyu4_15 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Scanner stdIn = new Scanner(System.in);
System.out.println("身長と標準体重");
int startSincho;
int endSincho;
int kizami;
do{
System.out.println("スタートの身長を入力");
startSincho = stdIn.nextInt();
}while (startSincho < 0);
do {
System.out.println("終わりの身長を入力して下さい。");
endSincho = stdIn.nextInt();
}while( endSincho < startSincho);
do {
System.out.println("増分を入力して下さい。");
kizami = stdIn.nextInt();
}while(kizami
int heikintaijyu;
for(int i = startSincho;startSincho System.out.print(startSincho + " ");
heikintaijyu = ((startSincho * 10 - 1000) * 9) / 10;
System.out.print(heikintaijyu / 10);
System.out.print('.');
System.out.println(heikintaijyu % 10);
}
}
}
茫洋先生の「明解Java入門編」の演習4-15を解いてみました。この問題の勘所はformat関数ですか?
一般的にはそうですが、昔のBasicならusingを使うところですが、formatは出てこないので、10倍で
計算して、10で割った商と余りで対応することですかね。小数点以下は一桁の条件は無いのですが
例を見るとそうだったので、そうしました。
int heikintaijyu;
int amari;
for(int i = startSincho;startSincho <= endSincho; startSincho += kizami){
System.out.print(startSincho + " ");
heikintaijyu = ((startSincho * 10 - 1000) * 9) / 10;
amari = heikintaijyu % 10;
if (amari > 0){
System.out.print(heikintaijyu / 10);
System.out.print('.');
System.out.println(heikintaijyu % 10);
}
else {
System.out.println(heikintaijyu / 10);
}
}
出力の仕方が問題をよく見ると違ってました。上のようにすると、問題とあってるようです。一番下のelse
以降は{}は省略できます。