שימוש בRandon בJava - בלי שתהיה חזרתיות

מישהו12

מהמשתמשים המובילים!
הנדסת תוכנה
1. יש כאן הרבה קוד כפול עם הIF והELSE
העירו לי. גם כאן וגם חבר ששלחתי לו את הקוד.
איך אתה מציע לשפר?
2. חובה להוסיף תנאי עצירה נוסף לDO WHILE אחרת כשהכל יהיה TRUE הלולאה לא תעצר לעולם
א. איך מוסיפים? כבר שאלתי על זה מכיוון אחר.
ב. טכנית, להבנתי, לא יכול להיות שהכל יהיה true, כי יש 20 תאים, והקוד רץ רק 10 פעמים.
ככה שהוא יכול למלא רק 10 תאים, לא?
 

java

משתמש סופר מקצוען
מנוי פרימיום
הנדסת תוכנה
2. חובה להוסיף תנאי עצירה נוסף לDO WHILE אחרת כשהכל יהיה TRUE הלולאה לא תעצר לעולם
א. איך מוסיפים? כבר שאלתי על זה מכיוון אחר.
אני חושבת שאכן זה לא יכול לקרות.
איך הcounter יגיע ל10 בלי שהוא הגריל מספר מתאים?
 

TzipiR

משתמש פעיל
@מישהו12 מצ"ב קוד של רובי הבוט (בתוספת כמה שיפוצים עצמאיים....)
Java:
import java.util.Scanner;
import java.util.Random;
public class Test {
    public static void main(String[] args) {
        int score = 0;
        final int MAX_QUESTIONS = 10;
        Scanner inputScanner = new Scanner(System.in);
        Random random = new Random();
        boolean[] usedWords = new boolean[20];
        String[] wordsOrig = {"father", "mother", "brother", "sister", "grandfather", "grandmother", "uncle", "aunt", "nephew", "niece", "diamond", "friend", "family", "good", "bad", "true", "false", "computer", "beautiful", "ugly"};
        String[] wordsNew = {"אבא", "אמא", "אח", "אחות", "סבא", "סבתא", "דוד", "דודה", "אחיין", "אחיינית", "יהלום", "חבר", "משפחה", "טוב", "רע", "אמת", "שקר", "מחשב", "יפה", "מכוער"};
        for (int i = 0; i < MAX_QUESTIONS; i++) {
            int position = random.nextInt(wordsOrig.length);
            while (usedWords[position]) {
                position = random.nextInt(wordsOrig.length);
            }
            usedWords[position] = true;
            String wordOrig = wordsOrig[position];
            String wordNew = wordsNew[position];
            System.out.println("The word in English: " + wordNew);
            System.out.println("Enter translation:");
            String answer = inputScanner.nextLine();
            if (answer.equals(wordOrig)) {
                System.out.println("Success!");
                score++;
            } else {
                System.out.println("Error!");
                System.out.println("Correct translation is: " + wordOrig);
            }
        }
        System.out.println("Your score: " + score + "/" + MAX_QUESTIONS);

    }

}
 

java

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

עריכה:
כל הקוד שבif-else יכול להיות מופרד לפונקציה נפרדת,
בif צריך לשלוח לשם word_new ובelse -
word_orig
 

קומקום חשמלי

משתמש פעיל
איך אתה מציע לשפר
מציעה;)
לא התעמקתי בקוד, אבל בגדול הפיתרון הוא לגזור את הקוד המשותף לפונקציה נפרדת גלובלית (היא יכולה לקבל פרמטר אם יש שוני קטן בקוד) ולהפעיל אותה לפי הצורך
אפשרות אחת
אבל למי שלא למד עדיין פונקציות זה לא אופציה
לכן אפשר להוסיף תנאי רק עבור 2 השורות הרלוונטיות ואת האר הקוד לעשות במשותף
א. איך מוסיפים? כבר שאלתי על זה מכיוון אחר.
ב. טכנית, להבנתי, לא יכול להיות שהכל יהיה true, כי יש 20 תאים, והקוד רץ רק 10 פעמים.
ככה שהוא יכול למלא רק 10 תאים, לא?
א. כמו בIF, ע"י &&
ב. נכון, לא שמתי לב לשורה הזאת
באמת אין צרוך בתנאי עצירה נוסף
 

מישהו12

מהמשתמשים המובילים!
הנדסת תוכנה
@מישהו12 מצ"ב קוד של רובי הבוט (בתוספת כמה שיפוצים עצמאיים....)
Java:
import java.util.Scanner;
import java.util.Random;
public class Test {
    public static void main(String[] args) {
        int score = 0;
        final int MAX_QUESTIONS = 10;
        Scanner inputScanner = new Scanner(System.in);
        Random random = new Random();
        boolean[] usedWords = new boolean[20];
        String[] wordsOrig = {"father", "mother", "brother", "sister", "grandfather", "grandmother", "uncle", "aunt", "nephew", "niece", "diamond", "friend", "family", "good", "bad", "true", "false", "computer", "beautiful", "ugly"};
        String[] wordsNew = {"אבא", "אמא", "אח", "אחות", "סבא", "סבתא", "דוד", "דודה", "אחיין", "אחיינית", "יהלום", "חבר", "משפחה", "טוב", "רע", "אמת", "שקר", "מחשב", "יפה", "מכוער"};
        for (int i = 0; i < MAX_QUESTIONS; i++) {
            int position = random.nextInt(wordsOrig.length);
            while (usedWords[position]) {
                position = random.nextInt(wordsOrig.length);
            }
            usedWords[position] = true;
            String wordOrig = wordsOrig[position];
            String wordNew = wordsNew[position];
            System.out.println("The word in English: " + wordNew);
            System.out.println("Enter translation:");
            String answer = inputScanner.nextLine();
            if (answer.equals(wordOrig)) {
                System.out.println("Success!");
                score++;
            } else {
                System.out.println("Error!");
                System.out.println("Correct translation is: " + wordOrig);
            }
        }
        System.out.println("Your score: " + score + "/" + MAX_QUESTIONS);

    }

}
בקוד הזה התרגום תמיד יהיה חד צדדי, לא?
 

TzipiR

משתמש פעיל
בקוד הזה התרגום תמיד יהיה חד צדדי, לא?
מצ"ב קוד דו צדדי (רנדומלי, לפעמים בעברית ולפעמים באנגלית)
Java:
import java.util.Scanner;
import java.util.Random;
public class Test {
    public static void main(String[] args) {
        int score = 0;
        final int MAX_QUESTIONS = 10;
        Scanner inputScanner = new Scanner(System.in);
        Random random = new Random();
        boolean[] usedWords = new boolean[20];
        String[] wordsOrig = {"father", "mother", "brother", "sister", "grandfather", "grandmother", "uncle", "aunt", "nephew", "niece", "diamond", "friend", "family", "good", "bad", "true", "false", "computer", "beautiful", "ugly"};
        String[] wordsNew = {"אבא", "אמא", "אח", "אחות", "סבא", "סבתא", "דוד", "דודה", "אחיין", "אחיינית", "יהלום", "חבר", "משפחה", "טוב", "רע", "אמת", "שקר", "מחשב", "יפה", "מכוער"};
        for (int i = 0; i < MAX_QUESTIONS; i++) {
            int position = random.nextInt(wordsOrig.length);
            while (usedWords[position]) {
                position = random.nextInt(wordsOrig.length);
            }
            usedWords[position] = true;
            int selectArray = random.nextInt(2);
            String wordOrig = wordsOrig[position];
            String wordNew = wordsNew[position];
            if (selectArray == 0) {
                System.out.println("The word in Hebrew: " + wordOrig);
            } else {
                System.out.println("The word in English: " + wordNew);
            }

            System.out.println("Enter translation:");
            String answer = inputScanner.nextLine();
            if ((selectArray == 0 && answer.equals(wordNew)) || (selectArray == 1 && answer.equals(wordOrig))) {
                System.out.println("Success!");
                score++;
            } else {
                System.out.println("Error!");
                System.out.println("Correct translation is: " + wordOrig);
            }
        }
        System.out.println("Your score: " + score + "/" + MAX_QUESTIONS);

    }

}
 

java

משתמש סופר מקצוען
מנוי פרימיום
הנדסת תוכנה
Java:
/* LearnLang.java
   Author: Ashi Vered
   Version: 1.0
   Date: 23.8.5784
 */

        for (int i = 0; i < 10; i++) {
            int selectArray = r.nextInt(2); // Randomly decide whether to prompt for a translation from original lang to new lang.
            int position; // Randomly choose a position in the arrays (i.e. choose which word to display).
            String answer;
            // check if position are used
            do {
                position = r.nextInt(19);
            } while (used[position]);
            used[position] = true;

            String wordToCheck;
            if (selectArray == 0) {
                wordToCheck = word_orig;
            } else {
                wordToCheck = word_new;              
            }
                    // show word in original language.
                    String word_orig = words_orig[position];
                    String word_new = words_new[position];
                    System.out.println("the word in Hebrew: " + word_orig);
                    System.out.println("Enter translate");
                    answer = in.next();
                    if (answer.equals(wordToCheck)) {
                        System.out.println("success!");
                        score++;
                    } else {
                        System.out.println("Error!");
                        System.out.println("Real translate is: " + word_new);
                    }
            }
        System.out.println("Your score: " + score + "/10");



        in.close();
        }

    }

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

מישהו12

מהמשתמשים המובילים!
הנדסת תוכנה
במקום לשכפל את כל הקוד, לשמור במשתנה את הערך שרוצים לבדוק לפיו, ואז להשתמש בו פעם אחת.
תודה, אבל נראה לי יש פספוס קטן, לא?
המילה שתוצג תמיד תהיה מאותו מערך (word_orig) והמילה שתוצג במקרה של שגאיה תמיד תהיה מהמערך השני (word_new).
לא?
צריך להיות ככה להבנתי
Java:
/* LearnLang.java
   Author: Ashi Vered
   Version: 1.0
   Date: 23.8.5784
 */

import java.util.Random;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int score = 0;
        Scanner in = new Scanner(System.in);
        Random r = new Random();
        //array to mark which positions are used
        boolean[] used = new boolean[20];



        //array for original words
        String[] words_orig = new String[20];
        //list of original words
        words_orig[0] = "אבא";
        words_orig[1] = "אמא";
        words_orig[2] = "אח";
        words_orig[3] = "אחות";
        words_orig[4] = "סבא";
        words_orig[5] = "סבתא";
        words_orig[6] = "דוד";
        words_orig[7] = "דודה";
        words_orig[8] = "אחיין";
        words_orig[9] = "אחיינית";
        words_orig[10] = "יהלום";
        words_orig[11] = "חבר";
        words_orig[12] = "משפחה";
        words_orig[13] = "טוב";
        words_orig[14] = "רע";
        words_orig[15] = "אמת";
        words_orig[16] = "שקר";
        words_orig[17] = "מחשב";
        words_orig[18] = "יפה";
        words_orig[19] = "מכוער";

        //array for new words
        String[] words_new = new String[20];
        //list of new words
        words_new[0] = "father";
        words_new[1] = "mother";
        words_new[2] = "brother";
        words_new[3] = "sister";
        words_new[4] = "grandfather";
        words_new[5] = "grandmother";
        words_new[6] = "uncle";
        words_new[7] = "aunt";
        words_new[8] = "nephew";
        words_new[9] = "niece";
        words_new[10] = "diamond";
        words_new[11] = "friend";
        words_new[12] = "family";
        words_new[13] = "good";
        words_new[14] = "bad";
        words_new[15] = "true";
        words_new[16] = "false";
        words_new[17] = "computer";
        words_new[18] = "beautiful";
        words_new[19] = "ugly";


        for (int i = 0; i < 10; i++) {
            int selectArray = r.nextInt(2); // Randomly decide whether to prompt for a translation from original lang to new lang.
            int position; // Randomly choose a position in the arrays (i.e. choose which word to display).
            String answer;
            // check if position are used
            do {
                position = r.nextInt(19);
            } while (used[position]);
            used[position] = true;

            String wordToCheck;
            String wordToView;
            if (selectArray == 0) {
                wordToView = word_new;
                wordToCheck = word_orig;
            } else {
                wordToView = word_orig;
                wordToCheck = word_new;               
            }
                    // show word in original language.
                    String word_orig = words_orig[position];
                    String word_new = words_new[position];
                    System.out.println("the word in Hebrew: " + wordToView);
                    System.out.println("Enter translate");
                    answer = in.next();
                    if (answer.equals(wordToCheck)) {
                        System.out.println("success!");
                        score++;
                    } else {
                        System.out.println("Error!");
                        System.out.println("Real translate is: " + wordToCheck);
                    }
            }
        System.out.println("Your score: " + score + "/10");



        in.close();
        }

    }
 

java

משתמש סופר מקצוען
מנוי פרימיום
הנדסת תוכנה
תודה, אבל נראה לי יש פספוס קטן, לא?
המילה שתוצג תמיד תהיה מאותו מערך (word_orig) והמילה שתוצג במקרה של שגאיה תמיד תהיה מהמערך השני (word_new).
לא?
צריך להיות ככה להבנתי
Java:
/* LearnLang.java
   Author: Ashi Vered
   Version: 1.0
   Date: 23.8.5784
 */

import java.util.Random;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int score = 0;
        Scanner in = new Scanner(System.in);
        Random r = new Random();
        //array to mark which positions are used
        boolean[] used = new boolean[20];



        //array for original words
        String[] words_orig = new String[20];
        //list of original words
        words_orig[0] = "אבא";
        words_orig[1] = "אמא";
        words_orig[2] = "אח";
        words_orig[3] = "אחות";
        words_orig[4] = "סבא";
        words_orig[5] = "סבתא";
        words_orig[6] = "דוד";
        words_orig[7] = "דודה";
        words_orig[8] = "אחיין";
        words_orig[9] = "אחיינית";
        words_orig[10] = "יהלום";
        words_orig[11] = "חבר";
        words_orig[12] = "משפחה";
        words_orig[13] = "טוב";
        words_orig[14] = "רע";
        words_orig[15] = "אמת";
        words_orig[16] = "שקר";
        words_orig[17] = "מחשב";
        words_orig[18] = "יפה";
        words_orig[19] = "מכוער";

        //array for new words
        String[] words_new = new String[20];
        //list of new words
        words_new[0] = "father";
        words_new[1] = "mother";
        words_new[2] = "brother";
        words_new[3] = "sister";
        words_new[4] = "grandfather";
        words_new[5] = "grandmother";
        words_new[6] = "uncle";
        words_new[7] = "aunt";
        words_new[8] = "nephew";
        words_new[9] = "niece";
        words_new[10] = "diamond";
        words_new[11] = "friend";
        words_new[12] = "family";
        words_new[13] = "good";
        words_new[14] = "bad";
        words_new[15] = "true";
        words_new[16] = "false";
        words_new[17] = "computer";
        words_new[18] = "beautiful";
        words_new[19] = "ugly";


        for (int i = 0; i < 10; i++) {
            int selectArray = r.nextInt(2); // Randomly decide whether to prompt for a translation from original lang to new lang.
            int position; // Randomly choose a position in the arrays (i.e. choose which word to display).
            String answer;
            // check if position are used
            do {
                position = r.nextInt(19);
            } while (used[position]);
            used[position] = true;

            String wordToCheck;
            String wordToView;
            if (selectArray == 0) {
                wordToView = word_new;
                wordToCheck = word_orig;
            } else {
                wordToView = word_orig;
                wordToCheck = word_new;              
            }
                    // show word in original language.
                    String word_orig = words_orig[position];
                    String word_new = words_new[position];
                    System.out.println("the word in Hebrew: " + wordToView);
                    System.out.println("Enter translate");
                    answer = in.next();
                    if (answer.equals(wordToCheck)) {
                        System.out.println("success!");
                        score++;
                    } else {
                        System.out.println("Error!");
                        System.out.println("Real translate is: " + wordToCheck);
                    }
            }
        System.out.println("Your score: " + score + "/10");



        in.close();
        }

    }
בדיוק
 

יוסייוסייוס

משתמש מקצוען
מעניין לעניין באותו עניין.
חוברת תרגילים מעולה לJAVA.
כדאי לעשות צעד אחרי צעד ללא דילוגים.
מי שעושה את כולה, יש לו ממש ידע בתכנות.
 

קבצים מצורפים

  • ספר התרגילים הגדול.pdf
    2.1 MB · צפיות: 20

מישהו12

מהמשתמשים המובילים!
הנדסת תוכנה
ניסיתי את זה עכשיו, זה לא עובד, כי אי אפשר להמיר String למערך של סטרינגים
1717321792956.png

וכשהגדרתי גם אותו כמערך גם יצא תוצאה מוזרה.
 

ARD

משתמש פעיל
ניסיתי את זה עכשיו, זה לא עובד, כי אי אפשר להמיר String למערך של סטרינגים
צפה בקובץ המצורף 1669045
וכשהגדרתי גם אותו כמערך גם יצא תוצאה מוזרה.
אם הבנתי נכון, אתה רוצה להשתמש בזה בתוך מערכים.
אז בהגדרת המשתנים תכתוב כך: (עם סוגריים מרובעים לציון מצביע על מערך)
Java:
String[] wordToCheck;
String[] wordToView;
 

מישהו12

מהמשתמשים המובילים!
הנדסת תוכנה
אם הבנתי נכון, אתה רוצה להשתמש בזה בתוך מערכים.
אז בהגדרת המשתנים תכתוב כך: (עם סוגריים מרובעים לציון מצביע על מערך)
Java:
String[] wordToCheck;
String[] wordToView;
ניסיתי. זה מה שכתבתי:
וכשהגדרתי גם אותו כמערך גם יצא תוצאה מוזרה.
מצרף תמונה
1717323192599.png
 

RGS

משתמש פעיל
יוצרי ai
wordToVieo זה מערך אי אפשר להציב ערך למערך.
אפשר להציב ערך למערך , ככה את מציבה ערך לתוך תא ספציפי של מערך...
 

אולי מעניין אותך גם...

הפרק היומי

הפרק היומי! כל ערב פרק תהילים חדש. הצטרפו אלינו לקריאת תהילים משותפת!


תהילים פרק לא

א לַמְנַצֵּחַ מִזְמוֹר לְדָוִד:ב בְּךָ יְהוָה חָסִיתִי אַל אֵבוֹשָׁה לְעוֹלָם בְּצִדְקָתְךָ פַלְּטֵנִי:ג הַטֵּה אֵלַי אָזְנְךָ מְהֵרָה הַצִּילֵנִי הֱיֵה לִי לְצוּר מָעוֹז לְבֵית מְצוּדוֹת לְהוֹשִׁיעֵנִי:ד כִּי סַלְעִי וּמְצוּדָתִי אָתָּה וּלְמַעַן שִׁמְךָ תַּנְחֵנִי וּתְנַהֲלֵנִי:ה תּוֹצִיאֵנִי מֵרֶשֶׁת זוּ טָמְנוּ לִי כִּי אַתָּה מָעוּזִּי:ו בְּיָדְךָ אַפְקִיד רוּחִי פָּדִיתָה אוֹתִי יְהוָה אֵל אֱמֶת:ז שָׂנֵאתִי הַשֹּׁמְרִים הַבְלֵי שָׁוְא וַאֲנִי אֶל יְהוָה בָּטָחְתִּי:ח אָגִילָה וְאֶשְׂמְחָה בְּחַסְדֶּךָ אֲשֶׁר רָאִיתָ אֶת עָנְיִי יָדַעְתָּ בְּצָרוֹת נַפְשִׁי:ט וְלֹא הִסְגַּרְתַּנִי בְּיַד אוֹיֵב הֶעֱמַדְתָּ בַמֶּרְחָב רַגְלָי:י חָנֵּנִי יְהוָה כִּי צַר לִי עָשְׁשָׁה בְכַעַס עֵינִי נַפְשִׁי וּבִטְנִי:יא כִּי כָלוּ בְיָגוֹן חַיַּי וּשְׁנוֹתַי בַּאֲנָחָה כָּשַׁל בַּעֲוֹנִי כֹחִי וַעֲצָמַי עָשֵׁשׁוּ:יב מִכָּל צֹרְרַי הָיִיתִי חֶרְפָּה וְלִשֲׁכֵנַי מְאֹד וּפַחַד לִמְיֻדָּעָי רֹאַי בַּחוּץ נָדְדוּ מִמֶּנִּי:יג נִשְׁכַּחְתִּי כְּמֵת מִלֵּב הָיִיתִי כִּכְלִי אֹבֵד:יד כִּי שָׁמַעְתִּי דִּבַּת רַבִּים מָגוֹר מִסָּבִיב בְּהִוָּסְדָם יַחַד עָלַי לָקַחַת נַפְשִׁי זָמָמוּ:טו וַאֲנִי עָלֶיךָ בָטַחְתִּי יְהוָה אָמַרְתִּי אֱלֹהַי אָתָּה:טז בְּיָדְךָ עִתֹּתָי הַצִּילֵנִי מִיַּד אוֹיְבַי וּמֵרֹדְפָי:יז הָאִירָה פָנֶיךָ עַל עַבְדֶּךָ הוֹשִׁיעֵנִי בְחַסְדֶּךָ:יח יְהוָה אַל אֵבוֹשָׁה כִּי קְרָאתִיךָ יֵבֹשׁוּ רְשָׁעִים יִדְּמוּ לִשְׁאוֹל:יט תֵּאָלַמְנָה שִׂפְתֵי שָׁקֶר הַדֹּבְרוֹת עַל צַדִּיק עָתָק בְּגַאֲוָה וָבוּז:כ מָה רַב טוּבְךָ אֲשֶׁר צָפַנְתָּ לִּירֵאֶיךָ פָּעַלְתָּ לַחֹסִים בָּךְ נֶגֶד בְּנֵי אָדָם:כא תַּסְתִּירֵם בְּסֵתֶר פָּנֶיךָ מֵרֻכְסֵי אִישׁ תִּצְפְּנֵם בְּסֻכָּה מֵרִיב לְשֹׁנוֹת:כב בָּרוּךְ יְהוָה כִּי הִפְלִיא חַסְדּוֹ לִי בְּעִיר מָצוֹר:כג וַאֲנִי אָמַרְתִּי בְחָפְזִי נִגְרַזְתִּי מִנֶּגֶד עֵינֶיךָ אָכֵן שָׁמַעְתָּ קוֹל תַּחֲנוּנַי בְּשַׁוְּעִי אֵלֶיךָ:כד אֶהֱבוּ אֶת יְהוָה כָּל חֲסִידָיו אֱמוּנִים נֹצֵר יְהוָה וּמְשַׁלֵּם עַל יֶתֶר עֹשֵׂה גַאֲוָה:כה חִזְקוּ וְיַאֲמֵץ לְבַבְכֶם כָּל הַמְיַחֲלִים לַיהוָה:
נקרא  4  פעמים

אתגר AI

הבעות פנים • אתגר 57

לוח מודעות

למעלה