我想编写一个读取此输入的程序:
1 3 9 16 25 17 150312 0.5 13.8 2.4
它应输出:
1.00,1.00
3.00,1.73
9.00,3.00
16.00,4.00
25.00,5.00
17.00,4.12
150312.00,387.70
0.50,0.71
13.80,3.71
2.40,1.55
我的代码是这样的:
import java.util.Scanner;
public class SqrtTable {
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
if(StdIn.isEmpty()==true) {
}
else {
output(s);
}
}
public static void output(Scanner s) {
double a = StdIn.readDouble();
//
StdOut.printf("%.2f, %.2f", a, Math.sqrt(a));
// System.out.println(a);
StdIn.readLine();
}
}
我的代码只列出了第一行。 我需要改变什么?
答案 0 :(得分:2)
尝试这样的事情:
Scanner sc = new Scanner(System.in);
String myString = sc.nextLine();
String[] flostr = myString.split(" ");
DecimalFormat df = new DecimalFormat("#.##");
for(String s : flostr){
System.out.println(Float.parseFloat(s) +" ," + df.format(Math.sqrt(Float.parseFloat(s))));
}
编辑:考虑用户输入将在不同的行,尝试类似:
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
List<String> list = new ArrayList<String>();
System.out.println("Enter your numbers, enter 'end' when done: ");
while(!sc.hasNext("end")){
list.add(sc.next());
}
String[] flostr = list.toArray(new String[0]);
for(String s : flostr){
System.out.println(String.format("%.2f", Float.parseFloat(s)) +" ," + String.format("%.2f", (Math.sqrt(Float.parseFloat(s)))));
}
}
答案 1 :(得分:0)
通过类似的东西
slack