运行for循环后出现意外结果

时间:2013-03-12 05:13:24

标签: java

我正在编写一个名为Bank的类并在构造函数中。我将帐户的初始余额设置为initialBalanceaccountsdouble[]数组类型的数据成员。

public Bank(int n, double initialBalance){
   accounts=new double[n];
   for( double i:accounts)
      i=initialBalance;
      System.out.println("setting accounts[3]"+accounts[3]);

 }

我面临的问题是我试图在循环后打印任何帐户的余额。它没有显示正确的值。

4 个答案:

答案 0 :(得分:2)

您是否应该将initialBalance分配给accounts数组的每个元素......

public Bank(int n, double initialBalance){
    accounts=new double[n];
    for( int i = 0; i < n; i++) {
        accounts[i]=initialBalance;
    }
    System.out.println("setting accounts[3]"+accounts[3]);
 }

另外,访问数组元素时要小心,它可能不存在。即accounts[3]

答案 1 :(得分:2)

for(int i = 0; i < accounts.length; i++){
   accounts[i] = initialBalance;
}
System.out.println("setting accounts[3]"+accounts[3]);

KISS!

答案 2 :(得分:1)

使用Java中的foreach循环无法修改数组。但是,您可以使用传统的for循环来执行此操作:

public Bank(int n, double initialBalance){
   accounts=new double[n];
   for(int i = 0; i < accounts.length; ++i)
      accounts[i] = initialBalance;
      System.out.println("setting accounts[i]"+accounts[i]);

 }

另外,另一个红旗:如果小于0的值作为n传递,如果n为负,则会产生NegativeArraySizeException

答案 3 :(得分:0)

在我看来,正确的代码如下,它可以帮助你:

public class Bank{
   public Bank(int n, double initialBalance){
   double accounts[]=new double[n];
   for(int i = 0; i<accounts.length; i++){
      accounts[i]=initialBalance;
      System.out.println("setting accounts[]"+accounts[i]);
   }//end of for
   }//end of constructor

  public static void main(String a[]){
  Bank b = new Bank(2, 12);

 }//end of main
}//end  of class