2012-01-30 120 views
-4

我遇到了這個代碼的問題,請任何人都可以幫助我?在java中更新數組

import java.util.Scanner; 
class A{ 
    int p[]; 
    int m,i; 
    A(){ 
     p=new int[][10,20,30,40,50]; 
    } 
    int sum(int p,int m){ 
     p+=m; 
     return p; 
    } 
} 
class B{ 
    int i,m; 
    public static void main(String args[]){ 
     A object=new A(); 
     Scanner input=new input(System.in); 
     m=input nextInt(); 
     for(i=o;i<object.p.length;i++){ 
      if(m==object.p[i]){ 
       n=object.sum(object.p[i],m); 
       object.p[i]=n; 
      } 
     } 
     for(i=0;i<object.p.length;i++){ 
      System.out.println(p[i]);} 
     } 

當我以10作爲輸入,然後將其與第一陣列值相匹配,然後添加併成爲20 ....但我的問題是,下一次,當我將再次運行程序,該值將不會改變(添加結果)....... 如何在更進一步計算的方法後更新p數組的值:? `

+0

請縮進您的代碼 – shiraz 2012-01-30 09:37:33

+0

正確的語法錯誤 – 2012-01-30 09:37:36

回答

1

首先,你似乎有一個矩陣(二維數組),我看不出爲什麼。

其次,在你的第一個for循環中,你有字母'o'而不是零。輸入錯誤? (複製粘貼代碼代替)

此外,一個新的值保存到一個數組,只是指它的指數,像這樣: p[1][1] = new value;(或你彷彿想:p[1] = new value;,但是這不是你該p )。

0

將結果(添加後)存儲到新數組中。因此你的原始數組不會被改變。當你完成你的方法時,你可以將結果存儲到原始數組中。

0

退出程序後,Java將進行垃圾回收。所以當你再次執行程序時,原始數組將被初始化。因此,要獲得以前的數組值,您需要將數組存儲到磁盤中。如果您仍想使用數組中已更改的值,則只能在程序執行期間執行此操作,無論是通過存儲在新陣列中還是將掃描器置於循環中。