我在计算最大和最小数字时遇到了一些问题...如果我输入的第一个数字比第二个数字输入的数字大,它将不会将第一个数字记录到最大数字......
看看输出,它将有助于更好地阐述.. Calculation Error..& 1st input problem.. 下面的代码!
NSString *dbName = [[NSBundle mainBundle] pathForResource:@"dbFile" ofType:@"db"];
答案 0 :(得分:1)
如果您使用 Java 8 ,则可以构建IntStream
,并使用IntSummaryStatistics
自动提取这些数字。您可以在Oracle here中找到官方文档。
以下是实现此目的的代码:
List<Integer> input = new ArrayList<>();
while (true) { // LOOP till user enter "-1"
number = kb.nextInt();
// Condition for the loop to break
if (number <= -1) {
System.out.println("End Of Input");
break;
} else {
input.add(number);
}
}
IntSummaryStatistics z = input.stream() // gives Stream<Integer>
.mapToInt(Integer::intValue) // gives IntStream
.summaryStatistics(); // gives you the IntSummaryStatistics
System.out.println(z);
如果您输入8 3 7
,则输出将为:
IntSummaryStatistics{count=3, sum=18, min=3, average=6.000000, max=8}
我希望它有所帮助!
答案 1 :(得分:0)
这样做:
public static void main(String[] args) {
int smallest = Integer.MAX_VALUE;
int largest = 0;
int number;
double totalAvg = 0;
double totalSum = 0;
int count = 0;
Scanner kb = new Scanner(System.in);
System.out.println("Enter few integers (Enter negative numbers to end input) :");
while (true) { //LOOP till user enter "-1"
number = kb.nextInt();
//Condition for the loop to break
if (number <= -1) {
System.out.println("End Of Input");
break;
} else {
count = count + 1;
}
if (number < smallest) { //Problem 1 : If 1st input num is bigger than 2nd input num,
smallest = number; // largest num will not be recorded..
}
//REMOVED ELSE ADDED another IF
if (number > largest){
largest = number;
}
totalSum = totalSum + number;
totalAvg = (totalSum / count);
}
System.out.println("The smallest number you have entered is : " + smallest);
System.out.println("The largest number you have entered is : " + largest);
System.out.println("The total sum is : " + totalSum);
System.out.println("The total average is : " + totalAvg);
System.out.println("Count : " + count);
} // PSVM
答案 2 :(得分:0)
问题是你的if语句,因为逻辑是有缺陷的。如果输入的数字小于最小值,则更新最小的数字。到目前为止一切都是正确的出现此问题,因为您更新了else部分中的最大值。这意味着,如果数字不是最小的,则覆盖最大数字。但如果数字大于最小数,则不会自动最大。正确的方法是检查数字是否大于新if语句中的最大数量,并且仅在这种情况下更新为最大值。