كيف تصبح قيمة المصفوفة فارغة في جافا إذا تم استخدامها ضمن النطاق؟ أنا أقدم كود جافا لذلك …


بقية الكود غير المذكور هنا صحيح …

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)
                                {
                                    
                                }
                            }
                        }
}

ما حاولت:

لا أستطيع أن أفهم لماذا الوحدة[n][i] تصبح فارغة بعد إظهار القيمة الأولى مباشرة، عندما تكون السجلات موجودة في الملف

الحل 1

كما قال ريتشارد، سيعتمد الأمر على البيانات التي تتم معالجتها، وليس لدينا إمكانية الوصول إلى نظام الملفات الخاص بك – مصحح الأخطاء (كما هو الحال دائمًا) هو أفضل صديق لك هنا حيث يمكنه أن يوضح لك بالضبط ما يحدث أثناء تشغيل برنامجك.
لذا، سيكون الأمر متروكًا لك.

لحسن الحظ، لديك أداة متاحة لك والتي ستساعدك على معرفة ما يجري: مصحح الأخطاء. تعتمد كيفية استخدامه على نظام التحويل البرمجي الخاص بك، ولكن البحث السريع في Google عن اسم IDE و”مصحح الأخطاء” الخاص بك من شأنه أن يوفر لك المعلومات التي تحتاجها.

ضع نقطة توقف على السطر الأول في الوظيفة، وقم بتشغيل التعليمات البرمجية الخاصة بك من خلال مصحح الأخطاء. ثم انظر إلى التعليمات البرمجية الخاصة بك وإلى بياناتك واكتشف ما يجب أن يحدث يدويًا. ثم قم بخطوة واحدة في كل سطر للتأكد من أن ما كنت تتوقع حدوثه هو بالضبط ما حدث. عندما لا يكون الأمر كذلك، فهذا هو الوقت الذي تواجه فيه مشكلة، ويمكنك التراجع (أو تشغيلها مرة أخرى والنظر عن كثب) لمعرفة السبب.

عذرًا، ولكن لا يمكننا القيام بذلك نيابةً عنك – حان الوقت لتتعلم مهارة جديدة (ومفيدة جدًا جدًا): تصحيح الأخطاء!

لكن افعل لنفسك معروفين عظيمين:
1) توقف عن استخدام أسماء المتغيرات القصيرة جدًا: استخدم أسماء ذات معنى بدلاً من “a” و”p” و”jj” و”y” و”c” وما إلى ذلك، وستصبح شفرتك أكثر قابلية للقراءة، ولكن أكثر موثوقية أيضًا لأنه يكون أكثر وضوحًا عند استخدام المتغير الخاطئ عن طريق الخطأ …

2) التوقف عن بلع الاستثناءات.

جافا
catch(IOException e)
{

}

قد يحدث خطأ “يختفي” ولكن من المحتمل جدًا أن يكون الاستثناء المبتلع هو سبب المشكلة التي رأيتها. إذا كنت تريد تجاهل خطأ ما، فقم بتسجيل الخطأ في ملف في ملف catch قم بالحظر حتى إذا حدث خطأ ما، يمكنك الرجوع إلى الوراء لمعرفة المشكلات التي تجاهلتها.

コメント

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