多输入行java

时间:2017-11-16 17:42:35

标签: java input

我想编写一个读取此输入的程序:

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();
    }
}

我的代码只列出了第一行。 我需要改变什么?

2 个答案:

答案 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