עבור לתוכן

לא מצליח לעשות מחלקה כמו שצריך בjava

Featured Replies

פורסם

אני צריך להוסיף למחלקה מסוימת שיטה שמקבלת 2 מחרוזות a1 a2 ומה שהיא צריכה לעשות עם המחרוזות האלה זה פשוט להחליף כל a1 בa2 (אם לא קיים במחרוזת אז בעצם אין שום פעולה)

המחלקה הנתונה היא

public class HWzone
{
private String st;
........
public String replaceStr(String a1, String a2)

נגיד a1 זה as

וa2 זה aaaa

והמחרוזת היא asasrr

אז המחרוזת תשתנה ל aaaaaaaarr

הקטע שגם אסור להשתמש בכל המתודות אלא רק ב

charAt(int i)

public int indexOf(String str, int index)

public int length()

public string substring(int i)

יש לי בעיה בסיסית שאני לא ממש יודע איך לגשת לזה, איך להשתמש בכלל במתודות

החתימה של השיטה היא בהכרח public String replaceStr(String a1, String a2)

הצלחתי להגיע לאנשהו בדרכים אחרות (אי אפשר להשתמש בreplace למשל)

הצלחתי לעשות אתזה עם char (חתימה אחרת ממה שהתבקשתי)

public class HWzone
{
private String st; //נתון בשאלה
public static String replaceStr (String str, char a1, char a2)
{
String newStr = str;
int i = str.indexOf(a1);
while (i != -1) // -1 means that indexOf did not find a1
{
newStr = newStr.substring(0,i) + a2 +
str.substring(i+1,str.length());
i = str.indexOf(a1, i+1);
} // while
return newStr;
} // replaceStr
}

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

ואם יש פה מישהו שמכיר מורה פרטי טוב לג'אווה מאיזור ת"א שישלח לי ה.פ.

פורסם

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

המחרוזת st היא המחרוזת שעליה אתה צריך לבדוק את a1,a2, ובגלל זה היא לא צריכה לעבור כפרמטר לפונקציה.

אני לא מבין למה בכלל עברת דרך charים - הקוד שלך היה עובד מעולה גם אם a1,a2 הם מחרוזות, רק צריך לדאוג לאורכים הנכונים.

פורסם
  • מחבר

התכוונת ככה?

public class HWzone
{
private String st; //נתון בשאלה
public static String replaceStr (String a1, String a2)
{
String st = a1;
int i = st.indexOf(a1);
while (i != -1) // -1 means that indexOf did not find a1
{
st = st.substring(0,i) + a2 +
st.substring(i+1,st.length());
i = st.indexOf(a1, i+1);
} // while
return st;
} // replaceStr
}

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

אז אני לא יודע גם איך לבדוק אם זה בכלל עובד

  public static void main (String[]args)
HWzone a=new HWzone
String a1=new String;
String a2=new String

ואז מה? על מה הוא בכלל יבדוק את זה על האוויר? אני פשוט ממש בהתחלת הדרך ואין לי כל כך את החשיבה הטכנית הזאת עדיין

תודה על המענה שניצל

פורסם

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

דבר שני, כנראה לא הבנת נכון את המהות של הפונקציה: היא אמורה לקחת את המחרוזת st, לחפש את כל המקומות בה שמופיעה המחרוזת a1, ולהחליף את החלק הזה של המחרוזת ב-a2.

שתי השורות האלה:

    String st = a1;
int i = st.indexOf(a1);

בעצם מחפשות את a1 בתוך עצמה.

בשביל לבדוק אם זה עובד: קודם כל, תאתחל את האיבר st של המחלקה לאיזשהי מחרוזת (אתה יכול לעשות את זה hard coded בהגדרה של המחלקה, או להוסיף פונקציה שתעשה את זה שתקרא לה מה-main). חוץ מזה, את a1 ו-a2 תגדיר להיות מחרוזות ספציפיות, נניח:

String a1 = "as";
String a2 = "aaaa";

פורסם
  • מחבר

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

דבר שני, כנראה לא הבנת נכון את המהות של הפונקציה: היא אמורה לקחת את המחרוזת st, לחפש את כל המקומות בה שמופיעה המחרוזת a1, ולהחליף את החלק הזה של המחרוזת ב-a2.

שתי השורות האלה:

    String st = a1;
int i = st.indexOf(a1);

בעצם מחפשות את a1 בתוך עצמה.

בשביל לבדוק אם זה עובד: קודם כל, תאתחל את האיבר st של המחלקה לאיזשהי מחרוזת (אתה יכול לעשות את זה hard coded בהגדרה של המחלקה, או להוסיף פונקציה שתעשה את זה שתקרא לה מה-main). חוץ מזה, את a1 ו-a2 תגדיר להיות מחרוזות ספציפיות, נניח:

String a1 = "as";
String a2 = "aaaa";

תודה שניצל

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

תגיד לי אם אני בכיוון הנכון, אין לי מושג מה ה הרד קודד לא למדתי את זה עדיין (כנראה) אז גם אם אני רוצה כנראה שאני לא יכול להשתמש בזה

תודה רבה רבה

import java.util.*;
public class HWzone
{
private String st; //נתון בשאלה
public String replaceStr (String a1, String a2)
{
String a3= "asasrr";
st = a3;
int i = a3.indexOf(a1);
while (i != -1) // -1 means that indexOf did not find a1
{
a3 = a3.substring(0,i) + a2 +
a3.substring(i+1,a3.length());
i = a3.indexOf(a1, i+1);
st=a3;
} // while
return st;
} // replaceStr

//tester
public static void main (String[]args)
{
HWzone test=new HWzone();
String b1 = "as";
String b2 = "aaaa";
System.out.println(+test.replaceStr(b1, b2));
}
}

אני בכיוון? יש לי שגיאת קומפילציה בפריטנלן

operator + cannot be applied to java.lang.string

פורסם
  • מחבר

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

מה גם שכל הסקריפט לא היה טוב כי לא שיניתי את ה+1 לa1.length

בקציור הצלחתי

תודה רבה שניצל

בטח היה נורא קשה להתמודד עם ה"אינטלגנציה" שלי בjava :s05: :yelclap::hi:

ארכיון

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

דיונים חדשים