Làm thế nào giá trị của một mảng trở thành null trong java nếu nó được sử dụng trong phạm vi? Tôi đang cung cấp mã java cho nó …

lập trình

[ad_1]

Phần còn lại của mã không được đề cập ở đây là chính xác…

import java.io.File;
import javax.swing.JOptionPane;

class abc
{
    // Fall is a directory of files
    for(File fr:Fall.listFiles())
                        {
                             // jtxt is an object of JTextArea()
                            if((jtxt.getText().contains("select ")) && (jtxt.getText().contains(" from ")) && (!jtxt.getText().contains(",")) && (jtxt.getText().contains(fr.getName())) && (ke.getKeyCode()==10))
                            {
                              String strField=jtxt.getText().substring(7).strip();
                                String crunch="";
                                char []p=strField.toCharArray();
                                char []a=new char[p.length];
                                for(int i=0;i<p.length;i++)
                                {
                                    if(p[i]!=' ')
                                    {
                                        crunch +=p[i];
                                    }
                                    if(p[i]==' ')
                                    {
                                        break;
                                    }
                                }
                                a=crunch.toCharArray();
                                String [] cell=new String[1];
                                for(int i=0;i<a.length;i++)
                                {
                                    cell[0]+=a[i];
                                }
                                String [] cc=new String[cell.length];
                                cc[0]=cell[0].substring(4);
                            
                                JOptionPane.showMessageDialog(null, cc[0]);
                            
                                try
                                {
                                
                                    FileReader fread=new FileReader(fr.getAbsolutePath()+"//"+"tbl");
                                    BufferedReader in=new BufferedReader(fread);
                                    String sql="";int val=0;int k=0;
                                    while((sql=in.readLine())!=null)
                                    {
                                     
                                        char [] pp=sql.toCharArray();
                                        char []aa=new char[pp.length];
                                        String []field=new String[p.length];
                                        int j=0;
                                        for(int i=0;i<pp.length;i++)
                                        {
                                            if(pp[i]!='-')
                                            {
                                                aa[i]=pp[i];
                                                field[j]+=aa[i];
                                            }
                                            if(pp[i]=='-')
                                            {
                                                j++;
                                            }
                                        }
                                    
                                        
                                        for(int i=0;i<j;i++)
                                        {
                                            if(cell[0].equals(field[i]))
                                            {
                                                val=i;
                                            }
                                        }
                                        k++;
                                    }
                                    int ss=0;int t=0;
                                    try
                                    {
                                        fread=new FileReader(fr.getAbsolutePath()+"//"+"data");
                                        in=new BufferedReader(fread);
                                        JOptionPane.showMessageDialog(null, val);
                                        String str="";
                                        ss=(int)in.lines().count();
                                        while((str=in.readLine())!=null)
                                        {
                                            t=in.readLine().length();
                                        }
                                        fread.close();
                                        in.close();
                                    }                                    
                                    catch(IOException e)
                                    {
                                        
                                    }
                                     JOptionPane.showMessageDialog(null,"ss "+ ss);
                                    String [][] g=new String[ss][t+250];
                                    String [][] Unit=new String[ss][t+250];
                                    String[] s=new String[ss];
                                    try
                                    {
                                        
                                        fread=new FileReader(fr.getAbsolutePath()+"//"+"data");
                                        in=new BufferedReader(fread);int y=0;
                                        String str="";int n=0;int jj=0;
                                        while((str=in.readLine())!=null)
                                        {
                                            //JOptionPane.showMessageDialog(null, str);
                                            char[] u=str.toCharArray();
                                            char[] b=new char[u.length];
                                            
                                            
                                            for(int i=0;i<u.length;i++)
                                            {
                                                if(u[i]!='-')
                                                {
                                                    b[i]=u[i];
                                                    Unit[y][jj]+=b[i];
                                                }
                                                if(u[i]=='-')
                                                {
                                                  JOptionPane.showMessageDialog(null,"unit : "+ Unit[y][jj]);
                                                    jj++;JOptionPane.showMessageDialog(null, "y : "+y);
                                                }
                                            }
                                            y++;
                                             
                                        }
                                        str="";
                                        in.close();
                                        fread.close();n=0;
                                        fread=new FileReader(fr.getAbsolutePath()+"//"+"data");
                                        in=new BufferedReader(fread);int b=1;int c=0;
                                        if(y==ss)
                                        {
                                        while(n<ss)
                                            {                                     
                                                for(int i=0;i<jj-1;i++)
                                                {                                                     
                                                    if(i==val)
                                                    {
                                                        g[n][i]=Unit[n][i];
                                                        JOptionPane.showMessageDialog(null, "g[c][i] : "+g[n][i]);
                                                        // the problem is here g[n][i] shows the first value correctly. but thenafter 
                                                        // it shows the values to be null, although the values are present in the file.
                                                    }                                                
                                                }                                               
                                                n++;c++;
                                            } 
                                        
                                        fread.close();
                                        in.close();
                                        n=0;
                                        
                                          
                                        
                                        
                                         TableViewStatic tvs=new TableViewStatic(g,cc,fr.getName());
                                           JTextFrame jf=new JTextFrame(tvs,jtxt,"SQL NoteBook");
                                           //These methods are correct
                                        }
                                    }
                                    catch(IOException e)
                                    {
                                            
                                    }
                                }
                                catch(IOException e)
                                {
                                    
                                }
                            }
                        }
}

Những gì tôi đã thử:

Tôi không thể hiểu tại sao Đơn vị[n][i] trở thành null ngay sau khi hiển thị giá trị đầu tiên, khi có bản ghi trong tệp

Giải pháp 1

Như Richard đã nói, điều này sẽ phụ thuộc vào dữ liệu được xử lý và chúng tôi không có quyền truy cập vào hệ thống tệp của bạn – trình gỡ lỗi (như mọi khi) là người bạn thân nhất của bạn ở đây vì nó có thể cho bạn biết chính xác những gì đang diễn ra trong khi chương trình của bạn chạy.
Vì vậy, nó sẽ tùy thuộc vào bạn.

May mắn thay, bạn có sẵn một công cụ giúp bạn tìm hiểu điều gì đang xảy ra: trình gỡ lỗi. Cách bạn sử dụng nó tùy thuộc vào hệ thống biên dịch của bạn, nhưng việc tra cứu nhanh tên IDE và “trình gỡ lỗi” trên Google sẽ cung cấp cho bạn thông tin bạn cần.

Đặt điểm dừng trên dòng đầu tiên trong hàm và chạy mã của bạn thông qua trình gỡ lỗi. Sau đó, hãy xem mã và dữ liệu của bạn và tìm hiểu xem điều gì sẽ xảy ra theo cách thủ công. Sau đó, thực hiện từng bước một để kiểm tra xem điều bạn mong đợi xảy ra có chính xác là điều đã xảy ra hay không. Nếu không, đó là lúc bạn gặp sự cố và bạn có thể theo dõi lại (hoặc chạy lại và xem xét kỹ hơn) để tìm hiểu lý do.

Xin lỗi, nhưng chúng tôi không thể làm điều đó cho bạn – đã đến lúc bạn học một kỹ năng mới (và rất, rất hữu ích): gỡ lỗi!

Nhưng hãy làm cho mình hai việc lớn:
1) Ngừng sử dụng tên biến thực sự ngắn: sử dụng tên có ý nghĩa thay vì “a”, “p”, “jj”, “y”, “c”, v.v. và mã của bạn vừa trở nên dễ đọc hơn nhưng cũng đáng tin cậy hơn vì nó rõ ràng hơn khi bạn sử dụng sai biến do nhầm lẫn …

2) Ngừng nuốt những ngoại lệ.

Java
catch(IOException e)
{

}

có thể gây ra lỗi “biến mất” nhưng rất có thể ngoại lệ bị nuốt phải đang gây ra sự cố mà bạn đã thấy. Nếu bạn muốn bỏ qua một lỗi, hãy ghi lỗi đó vào một tập tin trong catch chặn để nếu có sự cố xảy ra, bạn có thể nhìn lại để xem mình đã bỏ qua vấn đề gì.

[ad_2]

コメント

タイトルとURLをコピーしました