如何确定Java程序不接受7个控制台输入的原因?
我有一个应用程序,你应该输入7个整数,然后应用程序应该告诉你每个数字有多少次出现
示例:如果我有5678588,那么应该是我有两个5,一个6,一个7和三个8;是我输入的第一个数字,在这个例子中是5,然后出现7次。如何解决此问题
import java.util.Scanner;
public class U7A1_NumberCount {
public static void main(String[] args) {
final int MAX_INPUT_LENGTH = 7;
int[] inputArray = new int[MAX_INPUT_LENGTH];
System.out.print("Please, enter seven integers: ");
Scanner input = new Scanner(System.in);
int max = 0;
int nums = input.nextInt();
for(int n = 0; n < MAX_INPUT_LENGTH; n++) {
if(inputArray[n] > max) {
max = inputArray[n];
}
}
int[] count = new int[max + 1];
for(int n = 0; n < MAX_INPUT_LENGTH; n++) {
count[(inputArray[n])]++;
}
for(int n = 0; n < count.length; n++) {
if(count[n] > 0) {
System.out.println("The number " + nums + " occurs " + count[n] + " times.");
}
}
}
}
# 1 楼答案
首先,如果你不理解你的代码,让它更可读。。。这就避免了很多问题,只是在一开始
根据罗伯特·c·马丁(robert c.martin)的干净代码,试着在思考时写下代码。(https://de.wikipedia.org/wiki/Clean_Code)
下面是一个非常简化的示例,以避免使其复杂化
# 2 楼答案
对于数字的输入,我会使用一些可以在一行上用分隔符分割许多整数的东西。基本上,如果逗号是分隔符
显然,更多的错误处理可能是有用的(例如,跳过无法解析为整数的内容)。您还可以将分隔符更改为非数字的任何内容
然后我将创建一个
HashBag
(例如,我将在Apache Commons Collections中使用该实现),并使用包的toString
打印结果或者你可以通过
HashBag
来获取并打印你想要的信息类
HashBag
对象的实现很简单:创建一个以HashMap<Object, Integer>
为背景的类,并使用某种添加方法调用Object#equals
,如果为true,则增加值,如果为false,则创建一个值为1的新键# 3 楼答案
您创建了一个数组来保存7个整数,但没有使用它。您只为另一个变量赋值:
如果要将所有7个输入输入到数组中,可以提示用户n次:
# 4 楼答案
Java是面向对象的语言,所以使用类和对象来简化代码。我会这样做: