מתודת switch

ehudl1

New member
מתודת switch

שלום,
אני מנסה להחליף מחרוזת שיש לי במטריצה דו מימדית

public void Switch (int x1, int y1, int x2, int y2)
{
if(board[x1][y1]==null)
{
System.out.println(x1+","+y1+","+x2+","+y2);
board[x1][y1]=board[x2][y2];
board[x2][y2]=null;
}
}



B.Switch(info.getX(), info.getY(), x, y);


בפועל זה מה שמופיע לי בפלט כאשר אני מריץ את הדברים:


3
2
whoIs: null
3,2,1,2
5
2
whoIs: null
5,2,3,2

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

הנה עוד קטע, שיהיה קצת יותר ברור:

public void Switch(ActionEvent e)
{
char c_x=e.getActionCommand().charAt(2);
char c_y=e.getActionCommand().charAt(6);

int i_x=Character.getNumericValue(c_x);
int i_y=Character.getNumericValue(c_y);

System.out.println(i_x);
System.out.println(i_y);

System.out.println("whoIs: "+B.whoIs(i_x, i_y));

בקיצור, אני עומד על 1,2 אני רוצה את התווית ב- 3,2 וכו'.

תודה על העזרה.
 

BravoMan

Active member
אני לא חושב שאפשר להבין מה לא בסדר מהנתונים

שהבאת, אבל, אני רואה כאן מספר בעיות:

1. מה קורה אם תא היעד (x1, y1) אינו null?
אין לך שום אינדיקציה שההחלפה לא התבצעה.

2. אינך מדפיס את תוכן התאים לפני ההחלפה ואחרי ההחלפה, ככה שאי אפשר לדעת מה באמת הולך שם (אתה מניח שהתוויות נכונות, אבל אולי הן לא?).

אגב, מה הוא טיפוס של board?

3. אתה מביא את הפלט של פונקציה whois, אבל לא את הקוד שלה, אולי שם הבעיה והיא מדפיסה את הערך הלא נכון?
 
למעלה