zoukankan      html  css  js  c++  java
  • 找最长最短字符串

    2019-11-11  22:18:09

    练习1输入n行字符串,找到字符串里面最长、最短的字符串;如果相同最长、最短的情况,一并打印。

    最初思想:将n行字符串存入数组中。(Scanner s=new Scanner(System.in);)

    写找最长字符串的方法:先将0号元素记为长度最长的字符串。用max值记录当前0号位元素的长度。for循环遍历剩下的字符串,如果有长度比它大的,将max值更新为新的字符串的长度,将字符串更新为当前字符串。找最短字符串的方法同理。

    如果有相同长度长的字符串,怎么办?开始的想法是:同样长度的字符串可能不止一个,所以另外开辟一个数组,将同样长度的字符串存入数组中,最后返回数组。最后没有改成功,又想到了用字符串拼接的方法;定义另一个字符串,如果有相等长度的,就将两个字符串拼接起来,返回拼接后的字符串

    private static String findMin(String[] arr) {
            String str4 = arr[0];
            //String str5 = arr[arr.length-1];
            int min = str4.length();
            for (int i = 1; i < arr.length; i++) {
                if (arr[i].length() < min) {
                    min = arr[i].length();
                    str4 = arr[i];
                    for (int j = i+1; j < arr.length; j++) {
                        if (arr[j].length() == arr[i].length()) {
                            String str5= arr[j];
                            str4=str4+" "+str5;
                        }
                    }
                }
            }
            return str4+" ";
        }

    起初,将另外可能存在的字符串定义在了开始,但是这个字符串不一定存在,所以后来将它定义在了判断语句里面;实现了字符串的拼接,将拼接后的结果返回。

    还有一个问题,在主函数中:因为要输入字符串的个数,所以先输入一个数字,再提醒输入要比较的字符串后,因为输入格式发生了变化,编译器会默认将回车当成一个字符串,所以需要一个nexLine(),将回车键换掉。还有:缺少了将输入的字符串存入到要比较的数组里面的语句(粗心!!)

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

    整个代码为:

    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);
            System.out.println("最大的字符串:" + max.toString());//String已经重写了toString方法,所以会打印出字符串
            String min = findMin(arr);
            System.out.println("最小的字符串:" + min.toString());
        }
    
        private static String findMin(String[] arr) {
            String str4 = arr[0];
            //String str5 = arr[arr.length-1];
            int min = str4.length();
            for (int i = 1; i < arr.length; i++) {
                if (arr[i].length() < min) {
                    min = arr[i].length();
                    str4 = arr[i];
                    for (int j = i+1; j < arr.length; j++) {
                        if (arr[j].length() == arr[i].length()) {
                            String str5= arr[j];
                            str4=str4+" "+str5;
                        }
                    }
                }
            }
            return str4+" ";
        }
        private static String findMax(String[] arr) {
            String str = arr[0];  //将数组的0号位定义为str长度最长的字符串,依次比较
            //String str6 = arr[arr.length - 1];
            //String[] strr = new String[arr.length];
            int max = str.length();
            for (int i = 1; i < arr.length; i++) {
                if (arr[i].length() > max) {   //如果某个字符串的长度比它大
                    max = arr[i].length(); //将该字符串的长度更新为最大的
                    str = arr[i]; //并将该字符串赋给str
                    for (int j = i+1; j < arr.length; j++) { //如果有与这个字符串相同长度的
                        if (arr[j].length() == arr[i].length()) {
                            String str6 = arr[j];  //将这个字符串给新的str6,然后一起打印出来
                            str=str+"  "+str6;
                        }
                    }
                }
            }
            return str + " ";
        }
    
    }

  • 相关阅读:
    机器视觉行业的很多知识
    机器视觉行业的一些状况,新手们可以了解下
    图像处理心得
    自动化机器视觉行业视觉方案设计心得
    关于Visionpro可以同时运行几个VPP的问题
    把Visionpro的控件如何加载到VS中去
    VS2015和OpenCV配置
    在VS2015中用C++编写可被其它语言调用的动态库DLL
    自定义控件实现图像的显示和放大缩小,平移,右击菜单选择“自适应窗口”“保存图像”
    PictureBox中的图片实现鼠标滑轮控制缩放和平移
  • 原文地址:https://www.cnblogs.com/laurarararararara/p/11839040.html
Copyright © 2011-2022 走看看