נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: בדיקת הנתונים ב-arraylist

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
סיגל
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 12 February 2008 בשעה 17:53 | IP רשוּם
ציטוט סיגל

שלום, יש לי שאלה:
כיצד ניתן לבדוק מהו הערך במקומות של ה arraylist?
למשל:
 
קוד:
 

ArrayList myList = new ArrayList();

...

myList.Add(12);

 

כיצד ניתן לאחר מכן לבדוק מהו הערך במקום הראשון למשל?
אני צריכה לדעת את זה בשביל לעשות משפט תנאי, במערך רגיל הייתי עושה ככה:
 
קוד:
if (MyArray[1] > 5) ...
 
תודה!
חזרה לתחילת העמוד הצג את כרטיס החבר של סיגל חפש הודעות אחרות של סיגל בקר בדף הבית של סיגל
 
סיגל
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 12 February 2008 בשעה 20:22 | IP רשוּם
ציטוט סיגל

ד"א שכחתי לרשום - אני משתמשת ב- c#, תודה!
חזרה לתחילת העמוד הצג את כרטיס החבר של סיגל חפש הודעות אחרות של סיגל בקר בדף הבית של סיגל
 
berzniz
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 27 January 2008
משתמש: מנותק/ת
הודעות: 22
נשלח בתאריך: 12 February 2008 בשעה 20:51 | IP רשוּם
ציטוט berzniz

יש לבצע השלכה(casting) בצורה הבאה:

קוד:

System.Collections.ArrayList myList = new System.Collections.ArrayList();

myList.Add(1);

myList.Add(2);

int x = (int)myList[1];

if (x > 5) {

}

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

קוד:

if ( ((int)myList[1]) < 5) {

}



__________________
תכנות
לימוד Java
אקורדים
חזרה לתחילת העמוד הצג את כרטיס החבר של berzniz חפש הודעות אחרות של berzniz בקר בדף הבית של berzniz
 
סיגל
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 12 February 2008 בשעה 21:26 | IP רשוּם
ציטוט סיגל

תודה!
ניסיתי לעשות casting אך עכשיו ברגע שאני מריצה את התוכנית ומכניסה בסופה '*' (כוכבית), התוכנית קורסת, מדוע?
 
קוד:
using System;
using System.Collections;
public class Qtest
{
public static void Main()
{
Console.WriteLine("Enter grades, when finished press '*'");
int x = 0;
ArrayList myList = new ArrayList();
int sum = 0;
int grade = int.Parse(Console.ReadLine());
while (grade != '*')
{
x++;
myList.Add(grade);
sum += grade;
grade = int.Parse(Console.ReadLine());
}
int aavg = 0;
for (int i = 0; i < x; i++)
if (((int)myList[i]) > (sum / x)) aavg++;
Console.WriteLine("Above Average: {0}", aavg);
}
}
חזרה לתחילת העמוד הצג את כרטיס החבר של סיגל חפש הודעות אחרות של סיגל בקר בדף הבית של סיגל
 
berzniz
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 27 January 2008
משתמש: מנותק/ת
הודעות: 22
נשלח בתאריך: 12 February 2008 בשעה 21:54 | IP רשוּם
ציטוט berzniz

הנה הקוד המלא שיעבוד(הסברים למטה):

קוד:

Console.WriteLine("Enter grades, when finished press '*'");

int x = 0;

ArrayList myList = new ArrayList();

int sum = 0;

String input = Console.ReadLine();

while (!input.Equals("*"))

{

int grade = int.Parse(input);

x++;

myList.Add(grade);

sum += grade;

input = Console.ReadLine();

}

int aavg = 0;

for (int i = 0; i < x; i++)

if (((int)myList[i]) > (sum / x)) aavg++;

Console.WriteLine("Above Average: {0}", aavg);

הסבר:

1. התוכנית עפה כאשר ניסית להפוך את הסימן * לערך int על ידי הפקודה int.parse - התיקון היה קליטת הקלט לתוך מחרוזת(string) בשם input ורק אם היא שונה מ-*(כלומר מספר אמיתי) אז עושים המרה ל-int בעזרת הפקודה int.parse

2. עקב כך היו מספר שינויים: התנאי של ה-while השתנה בהתאם והפיכת ה-input מסוג מחרוזת ל-grade מסוג integer נעשים בתחילת הלולאה.

בהצלחה.



__________________
תכנות
לימוד Java
אקורדים
חזרה לתחילת העמוד הצג את כרטיס החבר של berzniz חפש הודעות אחרות של berzniz בקר בדף הבית של berzniz
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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