如何将Java中的数组元素作为double返回?

时间:2016-04-03 20:39:14

标签: java arrays types

我在下面的代码表中继续收到一个错误,该类型必须是一个数组,但它返回一个双重的"总计[agentnumber]"在打印声明中。任何人都可以解释这个以及如何在这种背景下解决它吗?

我的目标:编写代码,我在其中输入期间数,利率和代理数(每个代理被分配的主体等于其代理号,即代理1接收100,代理2接收200等)并打印每个代理的余额。我想在循环中执行此操作而不是使用复合兴趣公式,因为我正在尝试学习如何使用Java。

其他问题:这有点疯狂设置,因为我不知道如何返回for循环的结果。我应该在哪里放置"返回"我应该返回什么,假设我有兴趣最终为每个代理打印相当于agent [agentnumber] .money的代理。

public class Person{

    public double money; // initialize

    Person(double cash){
        money = cash;
    }
}
public class Bank {

    public static double bank(double rate, double periods, int agents){
        Person[] agent = new Person[agents];
        double total;

        for( int agentnumber = 0; agentnumber < agents; agentnumber++) {
           agent[agentnumber] = new Person((agentnumber+1)*100); // assign starting incomes and instantiate players

            for(int months = 0; months < periods; months++){
                agent[agentnumber].money = agent[agentnumber].money*(1.0 + rate);
                total = agent[agentnumber].money;
                System.out.println("The total balance of player " + agentnumber + " is " + total[agentnumber]);
            }
        }
    }

    public static void main(String[] args) {
        bank(0.05,120,3);
    }
}

4 个答案:

答案 0 :(得分:0)

total是双倍的,所以只需打印total而不是total[agentnumber]

答案 1 :(得分:0)

  

我在下面的代码中一直收到一个错误,告诉我该类型必须是一个数组,但它在print语句中为“total [agentnumber]”返回一个double。任何人都可以解释这个以及如何在这种背景下解决它吗?

您收到此错误消息,因为total是双精度数,而不是数组。要使用[],类型必须是数组。解决方案是打印total而不是total[agentnumber]

  

我应该在哪里放置“返回”以及我应该返回什么,假设我有兴趣最终为每个代理打印相应的代理[agentnumber] .money。

由于您的程序现在正在编写,因此您会收到错误,因为您声明bank()将返回一个double,但return中没有bank()语句。目前还不清楚为什么要从bank()返回任何内容。你可能想要改变

public static double bank(double rate, double periods, int agents)

public static void bank(double rate, double periods, int agents)

然后你不需要返回任何东西。

答案 2 :(得分:0)

  

我应该返回什么地方和哪里?

您似乎只想打印出数组的值,因此不需要返回任何内容。在这种情况下,您可以使该方法具有void返回类型。由于agents方法不需要本地main变量,因此也不清楚为什么需要数组,因此如果您确实需要数组,则应返回{ {1}}代替Person[] ...

您也可以像这样清理代码。

double

答案 3 :(得分:0)

我已经重新编写了上面的代码并确保编译。如果这不是我在评论中添加的演示,那么我会改变一些最佳实践

public class Bank {

    public static void main(String[] args) {
        Bank bank = new Bank(0.05,120,3);
    }

    // For readability and simplification I would make this public and
    // move it into it's own file called Person.java 
    private class Person {
        public double money;

        Person(double cash){
            money = cash;
        }
    }

    public Bank(double rate, double periods, int numberOfAgents) {
        Person[] agent = new Person[numberOfAgents];

        // Typical java convention is to use camel case so
        // agentnumber would become agentNumber
        for( int agentnumber = 0; agentnumber < numberOfAgents; agentnumber++) {
            agent[agentnumber] = new Person((agentnumber+1)*100);

            for(int months = 0; months < periods; months++){
                agent[agentnumber].money = agent[agentnumber].money*(1.0 + rate);
            }
            System.out.println("The total balance of player " + agentnumber + " is " + agent [agentnumber].money);
        }
    }
}