我在下面的代码表中继续收到一个错误,该类型必须是一个数组,但它返回一个双重的"总计[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);
}
}
答案 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);
}
}
}