【发布时间】:2019-04-03 19:15:47
【问题描述】:
首先,我要感谢这个社区,虽然我来这里的时间不长,但我很感激它的每一点。
我正在做一个学校项目,我想除了最后一点之外,我大部分时间都弄明白了。当然,您可以随时就您看到的任何内容提供任何建议,但我的主要问题如下。
我很难打印出来: 我是否应该使用循环(例如布尔值)来测试发布的值是否为真?
投资业绩指标计数: 一种。 As 数量:价值 1250 美元或更高 湾。 B 数量:价值 1100 美元或更高且低于 1500 美元 C。 Cs 数量:价值 900 美元或更高且低于 1100 美元 d。 Ds 数量:价值 750 美元或更高,且低于 900 美元 e. Fs 数量:价值低于 750 美元
最后,再次感谢大家的耐心和理解。我真的很想了解它是如何工作的,所以如果你能解释一下它是如何工作的,我真的很感激。
程序调用文本文件中值的最小值、最大值和平均值。只需提供一些帮助信息。(我已经这样做了)
到目前为止,我已经尝试过循环来测试这些值,我不确定我做得对,但它对我不起作用。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;
public class Prog07_InvestmentManager {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Scanner inFile=null;;
File file=null;
boolean flag=true;
while(flag) {
try {
flag=false;
System.out.println("Please enter the file name to import, including file extension."); //prompt user
file = new File(in.nextLine()); //store user input in variable
inFile = new Scanner(new FileReader(file)); //read file
}
catch (FileNotFoundException e1) {
flag=true;
}
}
double min = Integer.MAX_VALUE;
double max = 0;
double mean = 0;
inFile.nextLine();
double line = 0;
int sum = 0;
int count = 0;
while (inFile.hasNextLine()) {
line=inFile.nextDouble();
sum+=line;
count++;
if(line>max)
max=line;
if(line<min)
min=line;
}
mean = (sum/count);
System.out.printf("Max: %-4.2f\n", max);
System.out.printf("Min: %-4.2f\n", min);
System.out.printf("Mean: %-4.2f\n", mean);
System.out.println();
if (in.hasNextDouble()) {
double[] values = new double [(int) in.nextDouble()];
}
try {
Scanner inputFile = new Scanner(file);
double[] arr = new double[(int) in.nextDouble()];
for (int i = 0; in.hasNextDouble(); i++) {
arr[i] = in.nextDouble();
}
} catch (FileNotFoundException e) {
file = new File("investments.txt");
System.out.print("File not found.\nPlease enter the correct path if needed.");
file = new File(in.nextLine());
}
in.close();
}
}
【问题讨论】:
-
能否附上示例文件或示例输入数据?
-
什么意思?类似于: if (max >= 1250) { do stuff? }
-
要求不明确。顺便说一句,有更好的选择来获取统计信息。 List
inputList = new ArrayList (); while (inFile.hasNextLine()) { line=inFile.nextDouble(); inputList.add(line); } DoubleSummaryStatistics stats = inputList .stream() .mapToDouble(Double::doubleValue) .summaryStatistics(); System.out.println("平均:" + stats.getAverage()); -
我很感激,不幸的是我们还没有涵盖数组列表,所以我不能用它来做这个。很抱歉不太清楚,我基本上想做的是打印出有多少个 A(值超过 1250),以及有多少个 B(值 1100+,但小于 1500)等。
标签: java arrays list loops printf