tl;博士
如果您问为什么结果数组的元素比预期的少一个,那是因为您在 for 循环中初始化了 i 变量。
➥ 将int i = 1 更改为int i = 0。
一个数组确实包含所有值
您正在返回所有值。这就是数组的作用:保存一系列值。您的代码成功返回了一个包含 float 原始值的数组。
示例代码
我建议使用ThreadLocalRandom 而不是Math.random,因为它提供了一些简单方便的方法。如果您曾经使用多线程,它会让您面向未来。
您需要将i = 1 更改为i = 0 才能在结果中获得正确数量的元素。也许这就是您的问题的意思,“为什么我的数组中的元素比预期的少一个?”。您对i 的初始化将是导致该问题的原因。
public static float[] generatePatientsTemperatures ( final int patientsCount )
{
float[] patientsTemperature = new float[ patientsCount ];
for ( int i = 0 ; i < patientsCount ; i++ )
{
patientsTemperature[ i ] = ThreadLocalRandom.current().nextInt(320,450) * 0.1F;
}
return patientsTemperature;
}
试试那个代码。要将数组的所有值作为文本查看,请调用实用方法 Arrays.toString( yourArrayHere )。
float[] temps = App.generatePatientsTemperatures( 3 );
String output = Arrays.toString( temps );
运行时:
输出 = [35.5, 37.100002, 34.3]
通过烦人的从零开始的计数来访问数组中的每个元素:第一个元素为零,第二个元素为 1,依此类推。
float first = temps[ 0 ] ;
float second = temps[ 1 ] ;
float third = temps[ 2 ] ;
List
使用List 比使用数组更容易。
List 仅包含对象引用,不允许原始值。 Java 具有自动装箱功能,可以自动将您的 float 原语转换为 Float 对象。只需重新定义您的数组以保存 Float 而不是 float。
提示:List.of 生成一个 unmodifiable 集合。
public static List < Float > generatePatientsTemperatures ( final int patientsCount )
{
Float[] patientsTemperature = new Float[ patientsCount ];
for ( int i = 0 ; i < patientsCount ; i++ )
{
patientsTemperature[ i ] = ThreadLocalRandom.current().nextInt( 320 , 450 ) * 0.1F; // Auto-boxed from `float` primitive to `Float` object.
}
List < Float > results = List.of( patientsTemperature );
return results;
}
一些代码来运行它。
List < Float > temps = App.generatePatientsTemperatures( 3 );
String output = temps.toString();
输出 = [32.8, 43.600002, 35.5]