עבור לתוכן

אובייקטים וג'אווה

Featured Replies

פורסם

שאלה של צעירים

בניתי אובייקט ובניתי תוכנית שמשתמשת באובייקט, כאשר אני מנסה להפעיל את התוכנית אז יש שגיאה בכל הפקודות שקשורות לאובייקט שבניתי, לפי מה שאני מבין- התוכנית הראשית לא מזהה את האובייקט שבניתי ולכן היא לא מזהה את הפקודות עם האובייקט.

השאלה שלי היא- איך אני מקשר בין התוכנית הראשית לאובייקט?

תודה מראש

גל

פורסם
  • מחבר

מצטער לא חשבתי שצריך את הקוד

האובייקט, שנשמר בקובץ אחד.

public class Game
{
private String name;
private static String genre;
private int age;
public Game (String name, int age)
{
this.name=name;
this.age=age;
this.genre="action";
}
public Game (Game g1)
{
this.name=g1.name;
this.age=g1.age;
this.genre=g1.genre;
}
public String getName()
{
return this.name;
}
public String getGenre()
{
return this.genre;
}
public int getAge()
{
return this.age;
}
public void setGenre(String genre)
{
this.genre=genre;
}
public void setName(String name)
{
this.name=name;
}
public void setAge(int age)
{
this.age=age;
}
}

התוכנית הראשית, שנשמרת בקובץ אחר

import java.util.*;
class GameStore
{
/** טענת כניסה:הפעולה מקבל מחרוזת המהווה שם של משחק ומערך המהווה חנות משחקים**/
/**טענת יציאה:הפעולה מחזירה האם המשחק נמצא במלאי או לא**/
static Scanner reader=new Scanner(System.in);
static final int N=5;
static boolean check(String gName,Game[] a)
{
for (i=0;i<N;i++)
if (gName.equals(a[i].getName())
return true;
return false;
}
/**טענת כניסה: הפעולה מקבלת מחרוזת המהווה שם משחק, מספר המהווה גיל , ומערך המהווה חנות משחקים**/
/**טענת יציאה: הפעולה מחזירה האם המשחק מתאים לגיל**/
static boolean check1(String gName,int gil1,Game[] a)
{
for (i=0;i<N;i++)
if (gName.equals(a[i].getName())
if(gil1==a[i].getAge())
return true;
return false;
}
public static void main(String[] args)
{
Game[] gs=new Game[N];
Game gs[0]=new Game ("Call Of Duty",16);
Game gs[1]=new Game ("Medal Of Honour",18);
Game gs[2]=new Game (gs[2]);
Game gs[3]=new Game (gs[1]);
Game gs[4]=new Game ("Counter Strike",17);
System.out.println ("Would you like to check if your game is in the stock? enter 1 if yes or 0 if no");
int x=reader.nextInt();
if (x==1)
{
System.out.println("Enter the name of the game");
String s=reader.next();
if (check(s,gs))
System.out.println("The game is in stock");
else
System.out.println("The game is missing");
}
else
{
System.out.println ("Would you like to check if your game is available for your age? enter 1 if yes or 0 if you want to exit");
x=reader.nextInt();
if (x==1)
{
System.out.println("Enter the name of your game");
String s1=reader.next();
System.out.println("Enter you age");
int gil=reader.nextInt();
if (check1(s1,gil,gs))
System.out.println("The game is available for your age");
else
System.out.println("The game is not available for you age");
}
else
{
System.out.println("The program is over, press F5 to restart");
}
}
}
}

אל תצחקו זאת רק עבודה שהמורה שלי ביקש ממני להגיש ;D

פורסם

והשגיאה המדוייקת שאתה מקבל היא...?

חוץ מזה, שתי המחלקות יושבות באותו package? (באותה תיקייה)

פורסם
  • מחבר

בזמן הקומפילציה, האובייקט עובר אותה בלי בעיות. השגיאות בתוכנית הראשית הן:

12 errors found:
File: C:\Users\Gal\Desktop\New folder\GameStore.java [line: 11]
Error: C:\Users\Gal\Desktop\New folder\GameStore.java:11: ')' expected
File: C:\Users\Gal\Desktop\New folder\GameStore.java [line: 20]
Error: C:\Users\Gal\Desktop\New folder\GameStore.java:20: ')' expected
File: C:\Users\Gal\Desktop\New folder\GameStore.java [line: 28]
Error: C:\Users\Gal\Desktop\New folder\GameStore.java:28: ']' expected
File: C:\Users\Gal\Desktop\New folder\GameStore.java [line: 28]
Error: C:\Users\Gal\Desktop\New folder\GameStore.java:28: illegal start of expression
File: C:\Users\Gal\Desktop\New folder\GameStore.java [line: 29]
Error: C:\Users\Gal\Desktop\New folder\GameStore.java:29: ']' expected
File: C:\Users\Gal\Desktop\New folder\GameStore.java [line: 29]
Error: C:\Users\Gal\Desktop\New folder\GameStore.java:29: illegal start of expression
File: C:\Users\Gal\Desktop\New folder\GameStore.java [line: 30]
Error: C:\Users\Gal\Desktop\New folder\GameStore.java:30: ']' expected
File: C:\Users\Gal\Desktop\New folder\GameStore.java [line: 30]
Error: C:\Users\Gal\Desktop\New folder\GameStore.java:30: illegal start of expression
File: C:\Users\Gal\Desktop\New folder\GameStore.java [line: 31]
Error: C:\Users\Gal\Desktop\New folder\GameStore.java:31: ']' expected
File: C:\Users\Gal\Desktop\New folder\GameStore.java [line: 31]
Error: C:\Users\Gal\Desktop\New folder\GameStore.java:31: illegal start of expression
File: C:\Users\Gal\Desktop\New folder\GameStore.java [line: 32]
Error: C:\Users\Gal\Desktop\New folder\GameStore.java:32: ']' expected
File: C:\Users\Gal\Desktop\New folder\GameStore.java [line: 32]
Error: C:\Users\Gal\Desktop\New folder\GameStore.java:32: illegal start of expression

בקיצור, כל הפקודות שקשורות לאובייקט.

כל הקבצים הקשורים לשתי המחלקות יושבים באותה תיקייה. (שישה קבצים בסך הכל- 3 לתוכנית הראשית ו-3 לאובייקט עם סיומות java .class .java~)

פורסם

אם היית קורא את הודעת השגיאה היית מבין מה הבעיה... חסרים לך סוגריים.

דרך אגב, כדאי מאוד לעטוף כל בלוק של for/if בסוגריים מסולסלים, גם אם הוא מכיל רק שורה אחת. זה הופך את הקוד להרבה יותר קריא ופחות error prone.

פורסם
  • מחבר

תודה רבה, גם על הטיפ :)

רק תיקנתי חלק מהסוגריים, אבל יש לי בכמה שורות נוספות עוד שגיאה

File: C:\Users\Gal\Desktop\New folder\GameStore.java [line: 38]
Error: C:\Users\Gal\Desktop\New folder\GameStore.java:38: ']' expected
File: C:\Users\Gal\Desktop\New folder\GameStore.java [line: 38]
Error: C:\Users\Gal\Desktop\New folder\GameStore.java:38: illegal start of expression

בשורה

  Game gs[0]=new Game ("Call Of Duty",16);

לדוגמה

אני לא מבין איפה חסרות סוגריים מרובעות, ומה illegal start of expression דורש ממני לתקן

עדכון: מצאתי את הבעיה, תודה רבה שניצל- עזרת לי מאוד

ארכיון

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

דיונים חדשים