gpt4 book ai didi

java - 如何检查高于或低于某些预定限制的值

转载 作者:行者123 更新时间:2023-12-02 10:02:56 25 4
gpt4 key购买 nike

首先,我要感谢这个社区,虽然我来的时间不长,但我很感激它的每一点。

我正在做一个学校项目,我想除了最后一点之外,大部分内容我都已经弄清楚了。当然,请随意就您看到的任何内容提供任何建议,但我的主要问题如下。

我在打印此内容时遇到困难:我应该使用循环(例如 boolean 值)来测试发布的值是否为真?

投资绩效指标计数:A。 A 数量:值(value) 1250 美元或以上b. B 数量:值(value) 1100 美元或以上且低于 1500 美元C。 C 数量:值(value) 900 美元或以上且低于 1100 美元d. D 数量:值(value) 750 美元或以上,且低于 900 美元e. F 数量:值(value)低于 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();
}
}

最佳答案

如果您只是想打印每个类别(A、B、...)的频率,我可能会使用 java 的 HashMap 创建频率图。您可以为每个类别分配键,然后为每个值出现的每个键分配值。您可以非常喜欢 Java 8+

你可以这样做:

String key;
HashMap<String, Integer> freqMap = new HashMap<>();

while(inFile.hasNextLine()) {
if(inFile.hasNextDouble()) {
Double nextDouble = inFile.nextDouble();
if(nextDouble >= 1250.0) {
key = A;
//either create a new key in the HashMap for A, B, etc. or increment the
//value associated with the existing key by one
freqMap.merge(key, 1, Integer::sum);
}
//we are going to use separate if statements as it appears that values can be in
//more than one category
if(nextDouble < 1500.0 && nextDouble >= 1100.0) {
key = B;
freqMap.merge(key, 1, Integer::sum);
}
and so on...
}
}

最后,您将循环遍历 HashMap 并打印键和值。如果您需要更多详细信息,请告诉我。

编辑:此方法不需要数组结构。但是,如果您要迭代数组来构建映射,而不是从文件接收数据,请将 while 循环更改为迭代数组的 for 循环。

关于java - 如何检查高于或低于某些预定限制的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55502709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com