輸入n個字符串,找出最長最短字符串(若有個數相同的,都打印出來)


    首先,要求找到最長最短字符串,我們應該用數組將其存起來,輸入的個數是不固定的,我們就可以用Scanner獲取要輸入的個數,最終找到的個數也不固定,我們可以封裝兩個方法,並且返回值類型為數組。

我遇到的問題,開始我想到的是字符串拼接,么想到返回值用數組存,導致每次返回的個數都是固定的,就算有多個。

代碼如下:

 

import java.util.Scanner;

//輸入n行字符串,找出最長最短字符串(若有個數相同的,都打印出來)
public class FindString {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("請輸入n個字符串");
        int n = s.nextInt();
        String[] arr = new String[n];
        s.nextLine();
        System.out.println("請輸入字符串");
        for (int i = 0; i < n; i++) {
            arr[i] = s.nextLine();
        }

        String[] max = findMax(arr,arr[0]);
        System.out.println("最長的: ");
        for (int i = 0; i < max.length; i++) {
            if(max[i] != null){
            System.out.print(max[i]+" ");
            }
        }
        System.out.println();

        String[] min = findMin(arr,arr[0]);
        System.out.println("最短的:");
        for (int i = 0; i < min.length; i++) {
            if(min[i] != null){
                System.out.print(min[i]+" ");
            }
        }
    }

    /**
     * 找最短的
     * @param arr 輸入的數組
     * @param s 數組的第一個元素
     * @return  返回的數組中放着最長的子串和null
     */
    private static String[] findMin(String[] arr, String s) {
        int min = s.length();
        String[] temp = new String[arr.length];
        for (int i = 1; i < arr.length ; i++) {
            if(arr[i].length() < min) {
                min = arr[i].length();
                s = arr[i];
            }
        }
        //走完說明找到了一個最長的,以這個長度為參考再遍歷一遍數組,找到與其相同長度的
        for (int j = 0; j < arr.length ; j++) {
            if( arr[j].length() == s.length()){
                temp[j] = arr[j];
            }
        }

        return temp;

    }

    private static String[] findMax(String[] arr, String s) {
        int max = s.length();
        String[] temp = new String[arr.length];
        for (int i = 1; i < arr.length ; i++) {
            if(arr[i].length() > max) {
                max = arr[i].length();
                s = arr[i];
            }
        }
        for (int j = 0; j < arr.length ; j++) {
            if( arr[j].length() == s.length()){
                temp[j] = arr[j];
            }
        }

        return temp;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM