簡體   English   中英

Java 編程初學者 While-Loop

[英]Java programming Beginner While-Loop

我正在為一組我不知道的動物編寫一個 while-Loop 程序。 用戶可以輸入他們想要的數量,但在輸入“消滅”時終止它。

這是我需要為該程序做的事情: 編寫一個程序,該程序使用 while 循環反復要求用戶為動物命名,然后詢問還剩下多少野生動物。 當輸入特殊代碼 EXTERMINATE 時,它應該停止,並命名最不瀕危的動物。

給動物取名? 科莫多龍在野外還剩下多少? 5000 給動物起個名字? 海牛在野外還剩下多少? 8000 給動物起個名字? 野生鴞鸚鵡還有多少只? 91 給動物起個名字? 佛羅里達黑豹在野外還剩下多少? 100 給動物起個名字?

最不瀕危的動物是海牛。 野外還有8000只。

我有兩個問題。 首先,我無法讓程序存儲所有動物名稱以輸出最后一個瀕臨滅絕的動物名稱。 所以我在想是否應該使用數組來跟蹤它們?

其次,當我輸入 exterminate 時,程序會在用戶插入 exterminate 后完成 while 循環而不會中斷。

請不要讓它變得復雜,因為我是 Java 新手並且不知道多維數組或 do-while 循環等。

這是我到目前為止所寫的;

    public static void animals()
{

    String animalname = "";
    String animalsleft = "";
    int noanimals = 0;

    while(!animalname.equals("exterminate"))
    {

        animalname = JOptionPane.showInputDialog("Name an animal"); 
        animalsleft = JOptionPane.showInputDialog("How many are left in the wild");
        noanimals = Integer.parseInt(animalsleft);
        System.out.println(animalname + " " + animalsleft);

    }

    JOptionPane.showMessageDialog(null, "The least endangered animal is the " + animalname + ".");
    JOptionPane.showMessageDialog(null, "There are " + animalsleft + " left in the wild."); 

}

每次循環時都會覆蓋字符串值。

您想要做的是使用字符串列表。

例如。

 ArrayList<String> animals = new ArrayList<String>();

 while(!animalname.equals("exterminate"))
 {

     animalname = JOptionPane.showInputDialog("Name an animal"); 
     animals.add(animalname);
     ...
 }

如果您想使用一個數組,您必須首先獲得您將采用的循環的重復次數。 例如,如果您要運行循環 100 次,請將數組初始化為

String[] animalNames = new String[100];

然后在你的 while 循環中

int i = 0;
while(i < animalNames.length) {
     animalNames[i] = JOptionPane.showInputDialog("Name an animal"); 
     i = i + 1;
}

這樣,您的數組仍將具有所有動物名稱。

問題很簡單。 並且有多種方法可以解決這個問題。 但首先你需要重新審視你的問題(它是如何被問到的)。

但你會及時了解這一點。 現在的解決方案:顯然你可以使用數組,但更好的方法是使用列表。 但是所有這些都是不必要的,您可以輕松避免使用所有內存。 只需使用臨時緩沖區並每次檢查新動物是否瀕臨滅絕。 只需在代碼中添加以下幾行即可。

public static void animals() { 
    String animalname = ""; 
    String animalsleft = ""; 
    int noanimals = 0;
    String prevanimalname = ""; 
    String prevanimalsleft = ""; 
    int prevnoanimals = 0;
    while(!animalname.equals("exterminate")) {
        animalname = JOptionPane.showInputDialog("Name an animal");
        animalsleft = JOptionPane.showInputDialog("How many are left in the wild"); 
        noanimals = Integer.parseInt(animalsleft); System.out.println(animalname + " " + animalsleft);
       if (noanimals > prevnoanimals) {
            swap(prevnoanimals, noanimals);
            swap(prevanimalname, animalname);
        }
    }
    JOptionPane.showMessageDialog(null, "The least endangered animal is the " +  prevanimalname + ".");
    JOptionPane.showMessageDialog(null, "There are " + prevanimalsleft + " left in the wild.");
}

您可以谷歌交換兩個變量,並在同一個 if 語句中對動物的名稱應用相同的交換。

而 mostAnimalCount 保存了數量最多的動物的數量。 最后你可以簡單地顯示帶有這些數字和名稱的對話框。

暫無
暫無

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

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