Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何打印与数组(JAVA)中存储的最长长度()相同的“所有”最长字符串的问题_Java_Arrays_String_Algorithm_For Loop - Fatal编程技术网

如何打印与数组(JAVA)中存储的最长长度()相同的“所有”最长字符串的问题

如何打印与数组(JAVA)中存储的最长长度()相同的“所有”最长字符串的问题,java,arrays,string,algorithm,for-loop,Java,Arrays,String,Algorithm,For Loop,编写一个程序,其中用户键入存储在字符串数组中的若干字符串,然后程序打印出用户输入的所有最长字符串 有一个问题,如何打印所有相同的最长长度根据这个句子,要求程序打印出所有最长的字符串 注:我的代码只能打印出一个最长的字符串,而不是所有最长的字符串。如何修复它 public static void method4(){ Scanner console = new Scanner(System.in); String[] list = new String[5]; int

编写一个程序,其中用户键入存储在字符串数组中的若干字符串,然后程序打印出用户输入的所有最长字符串

有一个问题,如何打印所有相同的最长长度根据这个句子,要求程序打印出所有最长的字符串

注:我的代码只能打印出一个最长的字符串,而不是所有最长的字符串。如何修复它

 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);

}

你必须分两次完成。第一个循环查找字符串的最大长度。然后第二个循环可以迭代并只打印具有最大长度的字符串

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();
}

还有其他方法,您可以在遇到最长字符串时将其存储在集合中,并在找到新的较长字符串并最终打印集合中的所有字符串时重置集合。

代码的问题是:在获取用户输入的循环中,您在此时打印最长字符串。 这意味着用户输入的第一个字符串将是最长的字符串,并且将被打印,因为它的长度与0相比,当然它更长。 必须在两个单独的循环中分离字符串的输入和最长字符串的输出打印。第一个循环获取字符串,通过比较计算最长字符串的长度,第二个循环迭代所有字符串,仅当其长度等于在第一个循环中计算的最大长度时才打印:

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");
    }
}

试着用更小的步骤:1。读取输入的所有字符串并将其存储在数组中,并记住最大长度。2.迭代数组,如果当前字符串长度与最大长度相同,则打印它。