דף 1 מתוך 1

שגיאה בקריאה מקובץ כאשר אני מריץ את הקובץ דוגמא

נשלח: 12:14 26/05/2010
על ידי moshes
אני מקבל את השגיאה

קוד: בחירת הכל

error "java.util.NoSuchElementException"
והוא מצביע לי על השורה

קוד: בחירת הכל

String value= st.nextToken().trim() ;
כאשר אני מנסה סתם להריץ את הקובץ לדוגמא שנתתם על סתם קובץ טקסט.
השאלה איך מתקנים את הבעיותיות ואולי זה רק אצלי ככה.

Re: שגיאה בקריאה מקובץ כאשר אני מריץ את הקובץ דוגמא

נשלח: 16:14 26/05/2010
על ידי talshum
גם אצלי זה תקול

Re: שגיאה בקריאה מקובץ כאשר אני מריץ את הקובץ דוגמא

נשלח: 18:33 26/05/2010
על ידי moshes
למתרגלים ,אחרי חפירה ממושכת אני חושב שגיליתי וסידרתי את הבעיה. הבעיה היא לפי מה שהבנתי , זה שהוא מנסה לגשת לעוד אלמנט במחרוזת אבל בגלל שהוא הגיע לסופה בעצם אין עוד אלמנטים ולכן זורק אקספשיין.
יש במחלקה של stringTokenizer פונקציה שנקראת hasMoreElements() שאני חושב שמסדרת את הבעיה .השאלה אם מותר להשתמש ואם באמת יש בעיה כלשהי בקריאה של הקבצים

Re: שגיאה בקריאה מקובץ כאשר אני מריץ את הקובץ דוגמא

נשלח: 09:48 27/05/2010
על ידי danny.oren
גם לנו יש את הבעיה הזו.

Re: שגיאה בקריאה מקובץ כאשר אני מריץ את הקובץ דוגמא

נשלח: 11:43 27/05/2010
על ידי TA_Ariel
בהחלט מותר ואף כדאי להשתמש בה.

Re: שגיאה בקריאה מקובץ כאשר אני מריץ את הקובץ דוגמא

נשלח: 16:32 29/05/2010
על ידי shaysw
אם אפשר לפרט בדיוק איך הפונקציה הזו עוזרת, עבור אנשים שלא מכירים פונקציות וטכניקות ב- java שלא נלמדו בכיתה.
כרגע הקובץ בדיקה הזה לא עוזר לנו בשום צורה, להיפך...

Re: שגיאה בקריאה מקובץ כאשר אני מריץ את הקובץ דוגמא

נשלח: 16:42 29/05/2010
על ידי moshes
בעיקרון אתה צריך לשנות טיפה את הקובץ שהם נתנו . כי איך שהקובץ כרגע הוא לא עוזר
תסתכל על הקוד הבא: שהוא קריאה מקובץ. בעיקרון מה שרשום כאן . זה שתקרא שורה שורה, זה כמו שלמדנו בסמסטר שעבר
ה StringTokenizer תפקידו לקרוא מילה מילה מתוך כל השורה שקלטת.
attr= st.nextToken().trim() כאשר ATTR זה סטרניג. הפקדוה הזו אומרת לו תקלוט מילה הבאה
את שאר הקוד אתה בעיקרון לא צריך (צריך רק את הסגירה של הקובץ- התכוונתי שמה שחשוב זה רק הקוד שכתוב כאן למטה הוא בעצם החשוב ביותר)
כרגע מה שצריך להוסיף לקוד זה הפונציה של HASMOREELEMNTS() לפני כל קריאה לst.nexttoken() בעצם לבדוק שאכן קיימת מילה הבאה
הפונציה hasmoreelemnts מחזירה ערך בוליאני. אם אין לו עוד אלמנטים כלומר מילה נוספת לקרוא תגיד לו שיקרא שורה הבאה
מקווה שעזרתי טיפה בכל הבלאגן.

קוד: בחירת הכל

public static void read_From_File_Example(String inputFilename){
       	System.out.println("Reading from file " + inputFilename);
        int n = 0;
		int m = 0;
		String[] id = null;
        try {
            File inFile = new File(inputFilename);
            FileReader ifr = new FileReader(inFile);
            BufferedReader ibr= new BufferedReader(ifr) ;

            String line = "" ;
            while (line != null )
            {
                line = ibr.readLine() ;
                if (line != null)
                {
                    StringTokenizer st = new StringTokenizer(line,"=") ;
                    String attr= st.nextToken().trim() ;

Re: שגיאה בקריאה מקובץ כאשר אני מריץ את הקובץ דוגמא

נשלח: 17:27 29/05/2010
על ידי shaysw
הבנתי, תודה.
שאלה שקשורה- איך אני יוצר טוקנייזר שמזהה לי לא רק רווחים בין מילים אלא גם טאבים?

Re: שגיאה בקריאה מקובץ כאשר אני מריץ את הקובץ דוגמא

נשלח: 18:01 29/05/2010
על ידי shaysw
באותו הקשר- אני עכשיו מנסה לשפר את הקידוד, אך כשאני נתקל במילה שעברה TAB, לדוגמא "public" אז הטוקנייזר מעביר לי מחרוזת באורך 7 (בדיבאגר ראיתי שמופיע "public" ללא רווח)
וכשאני מחלץ את התו במקום ה-0 charAt(0) הוא לא נותן לי 'p' אלא מעין... כלום (בטבלת משתנים לא מופיע שום תו).

Re: שגיאה בקריאה מקובץ כאשר אני מריץ את הקובץ דוגמא

נשלח: 18:14 29/05/2010
על ידי TA_Ariel
t\ מזהה tab.

Re: שגיאה בקריאה מקובץ כאשר אני מריץ את הקובץ דוגמא

נשלח: 18:16 29/05/2010
על ידי TA_Ariel
אם תגדיר stringtokenizer בלי delimiter כלומר רק עם המחרוזת, תקבל את זה בחינם.