【问题标题】:How to return all float values ​from an array in java?如何从java中的数组中返回所有浮点值?
【发布时间】:2020-12-30 07:34:01
【问题描述】:

我只返回最后一个值,请帮我返回所有值

public static float[] generatePatientsTemperatures(int patientsCount) {
        float[] patientsTemperature = new float[patientsCount];
        for (int i = 1; i < patientsCount; i++) {
            patientsTemperature[i] = Math.round(((float) (Math.random() * 8) + 32) * 100) / (float) 100.0;
        }
    
        return patientsTemperature;

【问题讨论】:

  • 您正在返回数组,这意味着您已经在返回所有值。也许您想打印这些值或对它们执行其他操作?
  • 您应该将 i 初始化为 0,以便为数组的所有元素赋值。
  • 您正在返回数组,这怎么可能是最后一个值?它具有从 1 到 patientsCount - 1 的所有值。

标签: java arrays intellij-idea return


【解决方案1】:

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]

【讨论】:

  • 非常感谢。我正在尝试另一种方法来获取整个数组,但它只给出最后一个值。如何用另一种方法显示一个数组的所有值?
  • @ArturKnyazev ???我刚刚写了这个答案,向您展示了这一点。
猜你喜欢
  • 2016-11-25
  • 2016-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-07
  • 2014-10-13
  • 1970-01-01
  • 2016-08-17
相关资源
最近更新 更多