פורסם 2010 בינואר 2015 שנים אני צריך להוסיף למחלקה מסוימת שיטה שמקבלת 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}בקיצור אני באמת מתחיל ואין לי מושג מה עושים, אין לי מושג גם איך אמור להכנס פה בכלל המחרוזת שעליה בודקים את הסטרינגים, גם למה בהכרח אני חייב את הפרייבטואם יש פה מישהו שמכיר מורה פרטי טוב לג'אווה מאיזור ת"א שישלח לי ה.פ.
פורסם 2010 בינואר 2115 שנים אין לי מושג גם איך אמור להכנס פה בכלל המחרוזת שעליה בודקים את הסטרינגים, גם למה בהכרח אני חייב את הפרייבט.המחרוזת st היא המחרוזת שעליה אתה צריך לבדוק את a1,a2, ובגלל זה היא לא צריכה לעבור כפרמטר לפונקציה.אני לא מבין למה בכלל עברת דרך charים - הקוד שלך היה עובד מעולה גם אם a1,a2 הם מחרוזות, רק צריך לדאוג לאורכים הנכונים.
פורסם 2010 בינואר 2115 שנים מחבר התכוונת ככה?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 HWzoneString a1=new String;String a2=new Stringואז מה? על מה הוא בכלל יבדוק את זה על האוויר? אני פשוט ממש בהתחלת הדרך ואין לי כל כך את החשיבה הטכנית הזאת עדייןתודה על המענה שניצל
פורסם 2010 בינואר 2115 שנים קודם כל, אני לא מבין למה אתה עושה את הפונקציה שלך 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";
פורסם 2010 בינואר 2115 שנים מחבר קודם כל, אני לא מבין למה אתה עושה את הפונקציה שלך 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
פורסם 2010 בינואר 2115 שנים מחבר כי בכל הקודים שעשיתי עד עכשיו עשיתי ככה (כמו רובוט לפי הכיתה), וזה עבד לי (גם בסטרינגים), מחקתי את הפלוס , תודה רבה. מה גם שכל הסקריפט לא היה טוב כי לא שיניתי את ה+1 לa1.length בקציור הצלחתי תודה רבה שניצל בטח היה נורא קשה להתמודד עם ה"אינטלגנציה" שלי בjava :s05:
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.