import java.util.Scanner;
import edu.princeton.cs.algs4.Bag;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
public class Test {
public static void main(String args[])
{
Bag<Double> numbers = new Bag<Double>();
// 由控制台输入一组double类型的数,添加到包numbers中。
while (!StdIn.isEmpty()) {
numbers.add(StdIn.readDouble());
}
int N = numbers.size();
// 求均值
double sum = 0.0;
for (double x : numbers)
sum += x;
double mean = sum / N;
// 求方差
sum = 0.0;
for (double x : numbers)
sum += Math.pow((x - mean), 2);
double std = Math.sqrt(sum / (N - 1));
StdOut.print("mean is: " + mean);
StdOut.print("\nstd is: " + std);
}
}
如上代码,我想问的是在控制台输入了一组数据怎么得出结果,一直都是输入的过程,按回车也是继续输入数据,怎么停止输入到背包中计算结果啊?
我感觉你可以在程序中设定单个字符或者作为标记,当程序检测到你输入的是结束字符的时候自动跳出。
按下 ctrl+z 终止输入,程序里判断是否遇到 EOF 字符。
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
使用的是第三方库,有几个方案:
1 研究第三方库中isEmpty,readDouble等函数的实现,看看有没有什么方式结束输入
2 在输入循环中自行设定退出条件,比如限定循环次数,或者当接收到特定输入时退出
3 换用标准库的输入方式,可以百度 "java Scanner ",很多例子,这种方式ctrl+z应该可行。
如果对您有帮助,请采纳答案好吗,谢谢!