java
1import java.util.*; 2 3public class Main { 4 5 public static void main(String[] args) { 6 Scanner scn = new Scanner(System.in); 7 8 int n = scn.nextInt(); 9 10 double[] array = new double[n]; 11 for (int i = 0; i < n; i++) { 12 array[i] = scn.nextDouble(); 13 } 14 15 for (double r : a) { 16 System.out.println(r); 17 } 18 } 19}
入力値が
5
0.62 6.31 6 1.63 6.24
出力を
0.62
6.31
6
1.63
6.24したい。しかし
0.62
6.31
6.0
1.63
6.24になる。
6だけを6.0ではなく6と出力したい。拡張for文のところでrが整数なら整数で出力、浮動小数点ならそのままと条件式を書ければ解決できそうに思っています。しかしどうゆう条件式を書けばいいのか検討がつきません。
> 拡張for文のところでrが整数なら整数で出力、浮動小数点ならそのまま
拡張for文でのループ実行時点では、その前段でどんな入力であろうとarray[i] = scn.nextDouble();
としているのですから、すべてdoubleの浮動小数点数で管理していることになります。どういう条件も何も、すべて浮動小数点数です。表示する際の文字列で小数点以下がすべて'0'ならそれを条件として小数点以下を切り捨てたかたちにするか、doubleの値をint型でキャストして出力すれば良いのではないでしょうか。
誤解があるのかもしれませんが、「浮動小数点数」とはdoubleやfloatなどの、小数部分を表現可能な値を格納するためのデータ形式を言います。
> rが整数なら整数で出力、浮動小数点ならそのまま
"整数"と"浮動小数点"の違いは何なのか、それはどうすれば得られるのかというようなことを考えて解決することこそプログラミングの醍醐味です。
回答2件
あなたの回答
tips
プレビュー