簡體   English   中英

如何打印“ ALL”具有存儲在array(JAVA)中的最長length()的最長字符串的問題

[英]Problem with how to print “ALL” the longest string which have SAME longest length() that stored in array(JAVA)

編寫一個程序,其中用戶鍵入許多字符串,這些字符串存儲在字符串數組中,然后該程序打印出用戶輸入的所有最長的字符串。

有一個問題如何打印所有相同的最長LENGTH()根據這句話,要求“程序打印出所有最長的字符串”

PS。 我的代碼只能打印一個最長的字符串,而不能打印所有最長的字符串。 如何解決。

 public static void method4(){
    Scanner console = new Scanner(System.in);
    String[] list = new String[5];

    int maxLength = 0;
    String longestString = null;
    String longestString1 = null;
    for (int i = 0; i < list.length; i++) {
        System.out.println("Enter a string 5 times: ");
        list[i] = console.next();

        if (list[i].length() > maxLength){
            maxLength = list[i].length();
            longestString = list[i];


        }
    }
    System.out.println("Longest string: "+longestString+ "\n\t\t"+longestString1);

}

您的代碼存在的問題是:
在獲取用戶輸入的循環中,此時將打印“最長字符串”。
這意味着用戶輸入的第一個字符串將是“最長字符串”,並且將被打印,因為它的長度與0比較,當然更長。
您必須在2個單獨的循環中將字符串的輸入和輸出(最長的字符串的打印)分開。
第一個循環獲取字符串,並通過比較計算最長字符串的長度,第二個循環遍歷所有字符串,並僅在其長度等於在第一個循環中計算出的最大長度時才打印:

String[] list = new String[5];

int maxLength = 0;

Scanner scanner = new Scanner(System.in);

for (int i = 0; i < list.length; i++) {
    System.out.println("(" + (i + 1) + ") Enter a string: ");
    list[i] = scanner.nextLine();

    if (list[i].length() > maxLength){
        maxLength = list[i].length();
    }
}

scanner.close();

int counter = 0;
for (String s : list) {
    if (s.length() == maxLength){
        counter++;
        System.out.println("(" + counter + ") Longest string: " + s + "\n");
    }
}

您必須分兩次通過。 第一個循環查找字符串的最大長度。 然后第二個循環可以迭代並僅打印具有最大長度的字符串,

public static void method4(Scanner console){
    String[] list = new String[5];

    int maxLength = 0;
    System.out.println("Enter a string 5 times: ");
    for (int i = 0; i < list.length; i++) {
        list[i] = console.next();

        if (list[i].length() > maxLength){
            maxLength = list[i].length();
        }
    }
    for (int i = 0; i < list.length; i++) {
        if (list[i].length() == maxLength) {
            System.out.println("Longest string: "+list[i]);
        }
    }

}

public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);
    method4(sc);
    sc.close();
}

還有其他方法,您可以在遇到最長的字符串時將它們存儲在集合中,並在找到新的更長的字符串時重置該集合,並最終打印該集合中的所有字符串。

暫無
暫無

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

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