עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

לא מצליח ליצור אובייקט בג'אווה

Featured Replies

פורסם

שלום לכולם,

התחלתי לכתוב תוכנה שתעזור לי לבדוק כל מיני שיטות במשחקי קלפים יצירתי מחלקה של חפיסת קלפים הקונסטרוקטור נראה כך:

    public class DeckOfCards
{
char[] Cards;
int nod;
public DeckOfCards(int nodc) //יצירת חפיסה
{
int n=1;
this.nod=nodc;
this.Cards=new char[nodc*52];
while(n<4*nodc){
this.Cards[1+n*13-1]='A';
this.Cards[2+n*13-1]='2';
this.Cards[3+n*13-1]='3';
this.Cards[4+n*13-1]='4';
this.Cards[5+n*13-1]='5';
this.Cards[6+n*13-1]='6';
this.Cards[7+n*13-1]='7';
this.Cards[8+n*13-1]='8';
this.Cards[9+n*13-1]='9';
this.Cards[10+n*13-1]='T';
this.Cards[11+n*13-1]='J';
this.Cards[12+n*13-1]='Q';
this.Cards[13+n*13-1]='K';
n++;
}
}

וניסיתי ליצור אותו כך:

    public static void main (String[]args)
{
Scanner in=new Scanner(System.in);
DeckOfCards doc;
int nod;
System.out.println("הכנס מספר חפיסות");
nod=in.nextInt();
doc=new DeckOfCards(nod);
}

אבל הECLIPSE רושם לי:

No enclosing instance of type BlackJack is accessible. Must qualify the allocation with

an enclosing instance of type BlackJack (e.g. x.new A() where x is an instance of

BlackJack).

BlackJack זה השם של כל הפרוייקט.

למישהו יש מושג מה לעשות?

נערך על-ידי NU96

פורסם

להבא יעזור אם תכניס את כל הקוד.

בשתי מילים: תוסיף את המילה static בהצהרה על המחלקה DeckOfCards (דהיינו public static class DeckOfCards במקום public class DeckOfCards) או לחילופין תעביר את כל המחלקה לקובץ נפרד בשם DeckOfCards.java.

הסבר:

לפי השגיאה, הגדרת את המחלקה DeckOfCards כמחלקה פנימית של המחלקה BlackJack. בג'אווה, מחלקה פנימית (שאינה מוגדרת כ-static) משוייכת למחלקה האב, וכל מופע שלה חייב להיות משויך למופע ספציפי של מחלקת האב. במקרה שלך ניסית ליצור מופע של DeckOfCards בלי קישור לשום מופע של BlackJack (משום שיצרת אותה מתוך פונקציה סטטית) ולכן הקומפיילר צעק על שגיאה. אם המחלקה הפנימית מוגדרת כ-static אז אין בעיה ותמיד אפשר ליצור מופע של המחלקה.

אם כל זה לא אומר לך כלום אז לא משנה, תלמד את זה כשתגיע לנושא של מחלקות פנימיות.

פורסם
  • מחבר

קודם כל תודה. דבר שני זה מובן לי חצי כוח חלק מהמושגים מוכרים לי וחלק לא אם יש לך קישור לאתר שמסביר את זה אני אשמח :)

פורסם

אם אתה רק מתחיל ללמוד ג'אווה, אז כמו שאמרתי - זה משהו שתגיע אליו כשתלמד על מחלקות פנימיות (inner class או nested class). אם אתה רוצה ללמוד על זה אתה יכול פשוט לחפש בגוגל "ג'אווה מחלקה פנימית" או "java inner class" ותמצא הרבה הסברים.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.