簡體   English   中英

Java-IF'input'='this'{將字符串從數組存儲到變量中}

[英]Java - IF 'input' = 'this' {store string from array into variable}

我是編程新手。 目前,我正在嘗試編寫程序,並且試圖弄清楚如何做某事。 我希望你們能幫助我,因為我不知道該怎么做...

所以,首先,我做了一個數組,並用東西填充了它:

String[] pizza = new String[10];
    pizza[0] = "1- Cheese";
    pizza[1] = "2- Wedge";
    pizza[2] = "3- Bacon";
    pizza[3] = "4- Hawaiian";
    pizza[4] = "5- Vegetarian";
    pizza[5] = "6- Pepperoni";
    pizza[6] = "7- Ham";
    pizza[7] = "8- Apple";
    pizza[8] = "9- Grape";
    pizza[9] = "10- Italian";

我要制作一個IF語句(在一段時間內)。 我將代碼放在這里,然后進行解釋。

int pizzaCounter = 0;

        while(pizzaCounter < 5)
        {

            Scanner pizzaPick = new Scanner(System.in);
            int Pizzas = pizzaPick.nextInt();

            if (Pizzas == 1)
            {
                *Store "1- Cheese" (From pizza[0]) into a variable*

                pizzaCounter++;
            }
            if (Pizzas == 2)
            {
                *Store "2- Wedge" (From pizza[0]) into a variable*

                pizzaCounter++;
            }
            if (Pizzas == 3) etc...

        }

現在在“在此處插入一些內容”位,我想嘗試使其存儲在數組(比薩餅)中的文本到某個變量中,以便稍后我可以打印出來...例如,如果用戶輸入“ 1 '然后它取:“ 1-Cheese”並將其存儲在一個變量中,我以后可以打印出來...

另外,我想使它整潔,以便沒有10條IF語句提示每個變量。

我不知道這是否有可能,但是任何幫助將不勝感激! :d

我希望我在這里問的是可以理解的...

請,如果可能的話,您能否解釋每個步驟的操作,以便我可以真正理解正在發生的事情,並且以后可以使用相同的代碼,而不僅僅是復制並粘貼代碼? 我有點菜鳥,所以我認為我學到的越多,以后就可以使用更多...非常感謝! :d

您可以將整個一系列if語句替換為以下內容:

string saveName = "";
if ((Pizzas >= 0) && (Pizzas <= 9)) {
    saveName = pizza[Pizzas];           // This is "insert something here".
    pizzaCounter++;
}

// Here, saveName has the pizza name.

有關完整的程序,該程序最多可以訂購五個比薩餅,可以節省很多並在最后打印出來,請參見以下內容:

import java.util.Scanner;

public class testprog {
    public static void main (String args[]) {
        String[] pizzaList = {" 0 - End of order",
            " 1 - Cheese", " 2 - Wedge", " 3 - Bacon", " 4 - Hawaiian",
            " 5 - Vegetarian", " 6 - Pepperoni", " 7 - Ham", " 8 - Apple",
            " 9 - Grape", "10 - Italian"};

        int[] orderList = new int[5];  // Ordered pizzas
        int pizzaCount = 0;            //    and count.

        Scanner pizzaPick = new Scanner(System.in);
        while (pizzaCount < 5) {
            // Output the menu.

            System.out.println ("Choose a pizza:");
            for (int i = 0; i < pizzaList.length; i++)
                System.out.println ("   " + pizzaList[i]);

            // Get input, check, and add pizza.

            int thisPizza = pizzaPick.nextInt();
            if (thisPizza == 0) break;

            if ((thisPizza > 0) && (thisPizza < pizzaList.length))
                orderList[pizzaCount++] = thisPizza;

            if ((thisPizza < 0) || (thisPizza >= pizzaList.length))
                System.out.println ("Invalid input of " + thisPizza);
        }

        // Output all pizzas.

        for (int i = 0; i < pizzaCount; i++)
            System.out.println ("Ordered: " + pizzaList[orderList[i]]);
    }
}
String[] PIZZA_LABELS = new String[]{ "1- Cheese", "2- Wedge" ... }
String label;
while(pizzaCounter < 5)
{
        Scanner pizzaPick = new Scanner(System.in);
        int Pizzas = pizzaPick.nextInt();
        label  = PIZZA_LABELS[Pizzas - 1]; // 1-indexed vs 0-indexed
        ...
        System.out.println(label);

“如果”消失了。 (我鼓勵您查看java.util.Map,以獲得比標簽數組更干凈的數據結構)。

不要在Java中將大寫單詞( Pizzas )用於本地基元。 按照慣例,這些是類名。

您想區分相同的東西,而不管Pizzas的價值如何-例如,您每次都增加pizzaCounter並將其排除在if / els中。 如果您需要做的只是獲取披薩類型的名稱,那么這里有一些示例,說明您根本不需要一組案例,您只需要為以后的使用分配即可。

如果每種情況都有一些獨特的東西,可以使用一個switch

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

順便說一句,您可以像這樣初始化數組:

String eg[] = {
   "one",
   "two",
   "three",
};

您可以在此處執行一些操作來優化代碼。 首先,將while循環放到for循環中,如下所示:

for (int i = 0; i < 5; i++) {
    // Will loop 5 times
}

其次,您可以將if語句替換為switch語句,如下所示:

switch (pizzaPick.nextInt()) {
    case 0:
        // Do something
        break;
    case 1:
        // Do something else
        break;
    case 2:
        // Etc.
        break
}

但是,我們實際上可以進一步優化它,這將完全不需要switch語句。 不過,首先,我們需要一個變量來存儲挑選的披薩。 我們可以使用另一個數組,該數組的長度為5個元素。 像這樣創建它:

String[] pickedPizzas = new String[5];

現在,我們可以用它來存儲挑好的披薩。 然后,我們可以在每個循環中執行此操作以保存挑選的披薩:

pickedPizzas[i] = pizza[pizzaPick.nextInt()];

如您所見,我們甚至不需要使用ifs或switch,因為我們可以只使用賦值。 我們可以通過對數組使用括號語法來繼續優化。 您可以像這樣初始化數組:

String[] strArray = {"one", "two", "three", ...};

這節省了空間並且更簡單。 最重要的是,將掃描儀的聲明移到循環外。 由於循環的范圍,將其放置在循環中將導致它在每次循環執行時被重新創建和銷毀。 將其放在循環之外將對此進行補救。

最終代碼如下所示:

// Hold all the pizza names
String[] pizzas = {
    "1- Cheese",
    "2- Wedge",
    "3- Bacon",
    "4- Hawaiian",
    "5- Vegetarian",
    "6- Pepperoni",
    "7- Ham",
    "8- Apple",
    "9- Grape",
    "10- Italian"
    };

// Create a variable to hold the selected pizzas
String[] pickedPizzas = new String[5];

// Create Scanner outside loop
Scanner scanner = new Scanner(System.in);

// Loop to get picked pizzas
for (int i = 0; i < 5; i++) {
    // Save picked pizza, subtracting 1 since arrays start at 0
    pickedPizzas[i] = pizzas[scanner.nextInt() - 1];
}

// Do stuff with the users picked pizzas!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM