java - 为什么我的代码只比较数组的第一个和最后一个数字 - Java
问题描述
我想获得数组的最小数量,但我的“if”比较只检查数组的第一个和最后一个位置。
这是我的代码:
int[] randNumbers = new int[20]; //deklaracja nowej tablicy 20-elementowej
Random r = new Random(); // Dodana metoda random do losowania
for(int i=0; i<randNumbers.length; i++) {
randNumbers[i] = r.nextInt(101);
int min = randNumbers[0];
System.out.println("Number "+i+": " + randNumbers[i]);
if (randNumbers[i] < min) {
min = randNumbers[i];
}
if (i == randNumbers.length-1) {
System.out.println("Min number is: " + min);
}
}
解决方案
问题是您不记得循环运行时的最小数量。如果你在循环之外创建一个变量,它不会在每次迭代中更新。您的代码可能如下所示:
int[] randNumbers = new int[20]; //deklaracja nowej tablicy 20-elementowej
Random r = new Random(); // Dodana metoda random do losowania
int min = 0;
for(int i=0; i<randNumbers.length; i++) {
int number = r.nextInt(101);
if(i == 0) min = number;
randNumbers[i] = number;
System.out.println("Number "+i+": " + number);
min = Math.min(min, number);
}
System.out.println("Min number is: " + min);
需要注意的几点:
- 变量
min
被移出循环。这是为了确保它在整个循环中是持久的,并且不会在循环的每次迭代中更新。 - 引入了一个新变量
number
。这是为了防止你不断调用randNumbers[i]
,这看起来更好,据我所知稍微加快了它。它还使更改一次变量变得更容易,并使其在需要的任何地方都有效。 - 最后一个
S.O.P
被移到循环之外。如果您可以将语句放在循环结束后的行,那么检查循环是否位于最后一个元素是没有意义的。它的功能相同,但看起来更好。 - 它没有使用
if
语句来设置 min,而是使用Math.min
.if
这只是表面上的改变,与语句的行为完全相同。
推荐阅读
- spring-boot - 如何让spring boot rest api发送混合内容作为响应(结构化内容加附件)
- c# - 当模型属性具有 [ConcurrencyCheck] 属性时,ASP.NET Core MVC ConcurrencyCheck 失败
- java - Spring休眠默认会话管理
- mvvm - SwiftUI 绑定到父视图重新渲染子视图
- angular - Angular + Azure:由于最长生命周期,刷新令牌已过期
- python - 如何检查if语句python中的两个变量?
- django - 基于另一个模型的值对 Django 模型之间的复杂关系进行建模
- oracle - 在控制台中告诉我 SELECT 中缺少 INTO 的错误。PL/SQL
- python - 将 Series 对象转换为 Dataframe
- javascript - NodeJS服务器和浏览器之间的实时通信