gpt4 book ai didi

java - 我想不明白

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

我的程序有以下要求:

  • 编写一个程序,从键盘读取 1 到 50 范围内的任意数量的整数,然后输出每个整数的个数值被读取。
  • 不输出零计数。
  • 提示用户输入示例运行中所示的内容。
  • 让用户输入 0 来终止输入。
  • 任何超出 1 到 50 范围的其他值都会收到错误消息。

到目前为止我已经这样做了:

import java.util.Scanner;
public class Countingintegers
{

public static void main(String[] args) {
int[] inputArray = new int[51];
Scanner keyboard = new Scanner(System.in);
int[] frequency = new int[50];
for(int i = 0; i < inputArray.length; i++)
{
System.out.println("Input: ");
inputArray[i] = keyboard.nextInt();
if (inputArray[i] > 0 || inputArray[i] <= 50)
{
++frequency[inputArray[i]];
}
else
{
break;
}

}
System.out.printf("%s%10s%n", "Number", "Frequency");
for (int number = 1; number < frequency.length; number++)
System.out.printf("%6d%10d%n", number, frequency[number]);

}


}

我的所有目标是否都实现了?

最佳答案

您还可以使用 map 轻松完成此操作。如果您使用TreeMap,输入将被排序。我还建议不要将所有代码放在主方法中。您应该在类中创建公共(public)方法,并创建该类的实例来调用方法,将主代码中的代码保持在最少数量,最多用于收集输入。

这是一个利用 map 来跟踪发生次数的示例:

    import java.util.Scanner;
import java.util.*;

public class Countingintegers{
private int min, max;
private Map<Integer,Integer> inputs = new TreeMap<>();

public Countingintegers(int min, int max){
this.min = min;
this.max = max;
}

public void addInt(Integer value) throws IllegalArgumentException{
if(value < min || value > max){
throw new IllegalArgumentException();
}
if(inputs.containsKey(value)){
inputs.put(value, inputs.get(value)+1);
}
else{
inputs.put(value, 1);
}
}

public void printCounts(){
System.out.printf("%s%10s%n", "Number", "Frequency:");
System.out.println(inputs);
}

public static void main(String[] args) {
int totalInputs = 50;
int numIntsLoaded = 0;
int input = -1;
Scanner keyboard = new Scanner(System.in);
Countingintegers counter = new Countingintegers(1, 50);

while(numIntsLoaded < totalInputs && input != 0){
System.out.println("Input a number between 1-50, or 0 to exit (" + (totalInputs-numIntsLoaded) + " to go):");
try{
input = keyboard.nextInt();
counter.addInt(input);
numIntsLoaded++;
}
catch(Exception e){
System.out.println("You entered an invalid input. Please try again!");
keyboard.nextLine();
}
}
counter.printCounts();
}
}

关于java - 我想不明白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35835986/

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