הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   [בעיה] JAVA (https://hosts.co.il/forums/showthread.php?t=53934)

X-T 20-09-07 16:25

[בעיה] JAVA
 
אוקיי אני כרגע מתחיל ללמוד JAVA בביצפר , והתחלתי לרשום קוד וזוהה לי שגיאה בקומפיילר ,
אשמח אם תעזרו לי להבין איפה השגיאה ובמה טעיתי , הנה הקוד :
PHP קוד:

/* חישוב שטח משולש והיקף משולש */
/* 20.9.07 idan sibony */
public class Meshoolash ;
{
  public static 
void main(string[] args
  {
    
int num1,num2,num3,num4 
    
num1 // basis ;
    
num2 // shok ;
    
num3 // shok ;
    
num4 // gova ;
    
System.out.println("היקף משולש:") ;
    
System.out.println("num1+num2+num3= "+(num1+num2+num3)) ; 
  }


קיבלתי את השגיאה הבאה:
PHP קוד:

Current document is out of sync with the Interactions Pane and should be recompiled!
java Meshoolash
Error
Undefined class 'Meshoolash'


תודה רבה לכל העוזרים! זה ממש דחוף

Elad-A 20-09-07 17:30

תנסה לשנות לזה:
קוד:

public static void main(string args[])

X-T 20-09-07 18:06

אלעד , תודה אבל לא . זה קוד שמור לשפה שאין לשנות אותו ולמרות שאמרת , ניסיתי ועדיין אותו דבר אז החזרתי למצב הקודם .

Meir 20-09-07 18:18

יש לך נקודה פסיק מיותרת במשפט:

קוד:

public class Meshoolash ;
וזה גם אמור להיות ככה:

קוד:

class Meshoolash
וכמו שאלעד המתודה הראשית אמורה להיות:

קוד:

public static void main(String args[])

X-T 20-09-07 18:22

המורה לימדה אותנו לרשום כך:
public class Meshoolash
זה פסול?

בקשר לזה:
public static void main(String args[])
זה לא נכון כי המורה אמרה שה-[] בא אחרי ה-String

liron 20-09-07 18:28

public class Meshoolash ;
שמת ; ולא צריך לשים את זה שם.

X-T 20-09-07 18:30

לירון , הורדתי את ה- ;
עדיין מציג לי את אותה שגיאה , מוזר ביותר מה שקורה כאן.

Meir 20-09-07 18:36

שמור את הקובץ כMeshoolash.java ותריץ אותו:

קוד:

class Meshoolash
{
    public static void main(String args[])
    {
        int num1, num2, num3, num4;
        num1 = 5;
        num2 = 3;
        num3 = 3;
        num4 = 2;
        System.out.println("num1+num2+num3= "+(num1+num2+num3));
    }
}

כנראה שאפשר להשתמש גם בstirng[], ובנוגע לPublic הברירת מחדל היא בכל מקרה שהמחלקה ציבורית.

X-T 20-09-07 18:51

מאיר , אני מקבל את אותה שגיאה זה לא משנה אם אני עושה בהתחלה : public class או רק class
ואותו דבר לגבי ה- string[] args
ניסיתי לשנות למה שאמרת , מופיעה לי אותה שגיאה

Meir 20-09-07 18:56

הקוד שהבאתי לך פועל אצלי, אתה מריץ את זה ככה:

קוד:

javac Meshoolash.java
java Meshoolash

?

liron 20-09-07 20:04

באיזה תוכנה אתה משתמש?

Kfir.G 20-09-07 20:05

הויכוח כביכול שיש פה בעצם אומר שאתם עובדים כמו תוכים. X-T אצלך נראה לי שהבעיה היא המורה אבל אצל השאר שענו פה אין לי שמץ מה הבעיה...
קודם כל בקשר לpublic class וclass הpublic זה פשוט מאפיין למחלקה שהופך אותה ל"ציבורית" מוגנת או פרטית (public,private,protected) כאשר ברירת המחדל היא public אבל תמיד עדיף לכתוב את ההגדרה הזאת לבד.
בקשר לString[] args או String args[] אלו פשוט שתי שיטות שונות להגדרות מערך שד"א אתם בכלל לא חייבים לקרוא לו args זה פשוט קיצור לarguments (בטח כתבתי עם שגיאות אבל אין לי כוח לבדוק...). לפי סאן השיטה הטובה מבין השתיים להגדרת מערך היא אחרי סוג המערך ולא אחרי התווית שלו. X-T תשאל את המורה שלך, השאר תלמדו מחדש על מערכים.
ועכשיו לבעיה שלשמה נפתח האשכול. קודם כל נתחיל בשורה
PHP קוד:

public class Meshoolash 

יש כאן בעיה לוגית חמורה שהרי נקודה פסיק (;) מסמנת בעצם סוף פקודה וכאן את סוגר בלוק פקודות שאותו כאמור סוגרים עם } לפני שבכלל פתחת אותו. הטעות שלך מובנת שכן יש הרבה מורים (אני מדבר מניסיון אישי שלי) שאומרים את המשפט הלא נכון בתחלית: "בג'אווה נכניס נקודה פסיק בכל סוף שורה" או משהו בסגנון ככה שאני באמת ממליץ לך להחליף מורה כי רואים בפרוש מהקוד שלך שאתה לא באמת מבין מה אתה עושה. כל השגיאות בקוד שלך נובעות ממיקום לא נכון של נקודה פסיק. לדוגמה בשורה
PHP קוד:

num4 // gova ; 

הצבת את הנקודה פסיק בתוך הערה (//) ולכן אין לה שום משמעות. יש להוסיף אותה לפני תחילת ההערה. ד"א הערת שורה יחידה נמשכת עד שמספר האסקי של אנטר מופיע (כל עורכי הטקסט יוצרים זאת אוטומטית ברגע שאתה לוחץ אנטר כך שאין לך מה לדאוג בקשר לזה)
הנה הקוד המתוקן שלך
PHP קוד:

public class Meshoolash  

  public static 
void main(String[] args)  
  { 
    
int num1,num2,num3,num4 ;  
    
num1 5// basis  
    
num2 3// shok  
    
num3 3// shok  
    
num4 2// gova  
    
System.out.println("היקף משולש:") ; 
    
System.out.println("num1+num2+num3= "+(num1+num2+num3)) ;  
  } 


עכשיו אני באמת ממליץ לך לעבוד עם eclipse. זאת סביבת עבודה ממש נוחה ויעילה לJAVA והיא כוללת בתוכה קומפלייר, דיבגר ועוד המון המון פונקציות יעילות.
עריכה:
שכחתי לציין גם שכתבת string במקום String. שים לב שג'אווה היא שפה רגישה כלומר שINT זה לא int (הסיבה היא שזה פשוט עובד לפי קוד אסקי כשאתה מקפל את זה). ד"א כל String זה מערך של chars בזכרון וString זאת מחלקה מובנת בג'אווה כמו System ולא סוג משתמש.

X-T 20-09-07 21:37

kfir_dnd
ממש תודה לך על ההסבר המפורט והיעיל ! לא אשכח לך את זה ;)
בנוסף חבר שלי בא אליי והסביר לי כמה דברים , התברר שהקומפיילר שלי לא יעיל =\
הורדתי eclipse , ממש נוח .
כפיר תודה רבה לך על התגובה המפורטת והעניינית!

ותודה לכם לכולם לכל מי שניסה לפחות לעזור!
אפשר לנעול =]

L[s]D 21-09-07 00:46

מומלץ מאוד לא לשים את הנקודה פסיק בתור הערה (:
תחליף את :
HTML קוד:

    num1 = 5 // basis ;
    num2 = 3 // shok ;
    num3 = 3 // shok ;
    num4 = 2 // gova ;

ב:

HTML קוד:

    num1 = 5 ; // basis
    num2 = 3 ; // shok
    num3 = 3 ; // shok
    num4 = 2 ; // gova


WebProject 21-09-07 07:24

אני האמת מעדיף את NetBeans גם סביבת עבודה נוחה מאוד :)


כל הזמנים הם GMT +2. הזמן כעת הוא 14:00.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ