输入n个字符串,找出最长最短字符串(若有个数相同的,都打印出来)
Posted 蔡小菜i
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输入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; } }
以上是关于输入n个字符串,找出最长最短字符串(若有个数相同的,都打印出来)的主要内容,如果未能解决你的问题,请参考以下文章