Java 在浮点数组中查找最小值
在学校,我们被要求创建一个函数,在浮点数组中找到最小值。在前两个阵列中,它可以工作。但是因为第三个数组只包含负值,所以它们都低于初始化时给定的值。所以它仍然是0.0 有人能帮忙吗Java 在浮点数组中查找最小值,java,arrays,Java,Arrays,在学校,我们被要求创建一个函数,在浮点数组中找到最小值。在前两个阵列中,它可以工作。但是因为第三个数组只包含负值,所以它们都低于初始化时给定的值。所以它仍然是0.0 有人能帮忙吗 float[] numbers = {3.3, 4.5, 7.2, 5.3, 9.0, 2.3}; // min 2.3, max 9.0 float[] numbers2 = {-8.0, 4.5, 1.2, -5.6, -9.1, 4}; // min -9.1, max 4.5 float[] numbers3
float[] numbers = {3.3, 4.5, 7.2, 5.3, 9.0, 2.3}; // min 2.3, max 9.0
float[] numbers2 = {-8.0, 4.5, 1.2, -5.6, -9.1, 4}; // min -9.1, max 4.5
float[] numbers3 = {-0.4, -0.7, -3.5, -1.9, -8.0}; // min -8.0, max -0.4
void setup() {
float highest = returnHighest(numbers);
float highest2 = returnHighest(numbers2);
float highest3 = returnHighest(numbers3);
println("The highest grade is: " + highest);
println("The highest grade is: " + highest2);
println("The highest grade is: " + highest3);
}
float returnHighest(float[] numbers) {
float highest = 0;
for(int i = 0; i < numbers.length; i++) {
if(numbers[i] > highest) {
highest = numbers[i];
}
}
return highest;
}
float[]number={3.3,4.5,7.2,5.3,9.0,2.3};//最小2.3,最大9.0
float[]numbers2={-8.0,4.5,1.2,-5.6,-9.1,4};//最小值-9.1,最大值4.5
float[]numbers3={-0.4,-0.7,-3.5,-1.9,-8.0};//最小值-8.0,最大值-0.4
无效设置(){
浮动最高=返回最高(数字);
浮动最高值2=返回最高值(数字2);
浮动最高值3=返回最高值(数字3);
println(“最高等级为:“+最高”);
println(“最高等级为:“+最高等级2”);
println(“最高等级为:“+最高等级3”);
}
浮点返回最高值(浮点[]数字){
最高浮点数=0;
for(int i=0;i最高){
最高=数字[i];
}
}
回报最高;
}
但是因为第三个数组只包含负值,所以它们都低于初始化时给定的值
答案是。。。有点简单。您可以使用数组中的一个数字(1)初始化变量lower
,也可以使用(2)初始化变量
(1) 使用数组中的数字初始化变量:
float highest = numbers[0];
使用此解决方案,首先必须确保没有空数组。否则你会被解雇
(2) 使用尽可能低的浮点值初始化变量:
float highest = Float.NEGATIVE_INFINITY;
每个浮点值都大于浮点值。负无穷大(除了负无穷大值本身)。循环后,您可以检查最高值
是否仍然等于浮点值。负无穷大
。在这种情况下,数组为空或只包含负无穷大
我建议采用方法(2)。这是查找集合/数组的最低/最高值的常见模式,也可以很好地处理空集合/数组
但是因为第三个数组只包含负值,所以它们都低于初始化时给定的值
答案是。。。有点简单。您可以使用数组中的一个数字(1)初始化变量lower
,也可以使用(2)初始化变量
(1) 使用数组中的数字初始化变量:
float highest = numbers[0];
使用此解决方案,首先必须确保没有空数组。否则你会被解雇
(2) 使用尽可能低的浮点值初始化变量:
float highest = Float.NEGATIVE_INFINITY;
每个浮点值都大于浮点值。负无穷大(除了负无穷大值本身)。循环后,您可以检查最高值
是否仍然等于浮点值。负无穷大
。在这种情况下,数组为空或只包含负无穷大
我建议采用方法(2)。这是查找集合/数组的最低/最高值的常见模式,也可以很好地处理空集合/数组。问题是在循环之前将最高值设置为0。因为数组中的所有值都小于0,所以if语句的计算结果永远不会为true。添加如下布尔值:
float returnHighest(float[] numbers) {
boolean firstTime = true;
float highest = 0;
for(int i = 0; i < numbers.length; i++) {
if(firstTime || numbers[i] > highest) {
highest = numbers[i];
firstTime = false;
}
}
return highest;
}
float返回最高值(float[]数字){
布尔值firstTime=true;
最高浮点数=0;
for(int i=0;i最高){
最高=数字[i];
第一次=错误;
}
}
回报最高;
}
问题是在循环之前将最高值设置为0。因为数组中的所有值都小于0,所以if语句的计算结果永远不会为true。添加如下布尔值:
float returnHighest(float[] numbers) {
boolean firstTime = true;
float highest = 0;
for(int i = 0; i < numbers.length; i++) {
if(firstTime || numbers[i] > highest) {
highest = numbers[i];
firstTime = false;
}
}
return highest;
}
float返回最高值(float[]数字){
布尔值firstTime=true;
最高浮点数=0;
for(int i=0;i最高){
最高=数字[i];
第一次=错误;
}
}
回报最高;
}
我建议在初始化时将第一个元素设置为最高值
所以你的函数变成了
float returnHighest(float[] numbers) {
float highest = numbers[0];
for(int i = 0; i < numbers.length; i++) {
if(numbers[i] > highest) {
highest = numbers[i];
}
}
return highest;
}
float返回最高值(float[]数字){
浮动最高=数字[0];
for(int i=0;i最高){
最高=数字[i];
}
}
回报最高;
}
另外,我假设您在标题中犯了一个错误,并且希望找到最高值我建议在初始化时将第一个元素设置为最高值 所以你的函数变成了
float returnHighest(float[] numbers) {
float highest = numbers[0];
for(int i = 0; i < numbers.length; i++) {
if(numbers[i] > highest) {
highest = numbers[i];
}
}
return highest;
}
float返回最高值(float[]数字){
浮动最高=数字[0];
for(int i=0;i最高){
最高=数字[i];
}
}
回报最高;
}
另外,我假设您在标题中犯了一个错误,并且希望找到最高值您是否只尝试比较数组中的数字?尝试将
highest
的初始值设置为数组的初始值,而不是0
是否仅尝试比较数组中的数字?尝试将highest
的初始值设置为数组的初始值,而不是0
您可以将highest
的初始值设置为数组的第一个元素,而不是0
:
highest = numbers[0];
但这样做的问题是,当您有空数组时,它将不起作用
此外,您还可以更有效地解决此问题:
将最高值的初始值设置为java中浮点数的最低值
highest = -Float.MAX_VALUE;
这样,它可以很好地处理负浮点数的任何子集。您可以将
最高值的初始值设置为数组的第一个元素,而不是0
:
highest = numbers[0];
但这样做的问题是,当您有空数组时,它将不起作用
此外,您还可以更有效地解决此问题:
集