Нужна помощь в том, чтобы передать строки (str) дальше в методы

Написал программу по обработке строк, которая принимает с консоли 5 строк и делает с ними операции ... по заданию нужно найти:

  1. Найти самую короткую и самую длинную строки. Вывести найденные строки и их длину.(сделано и работает)
  2. Вывести на консоль те строки, длина которых больше средней, а также длину.(сделал по аналогии с первым, но не работает)
  3. Найти слово, состоящее только из цифр. Если таких слов больше одного, найти второе из них.(сделал по аналогии с первым, но не работает)

Я вижу проблему в том, что в два следующих метода не принимают str, подскажи пожалуйста как это решить? Использовать Arrays и ArrayList нельзя(((

    import java.util.Scanner;

    public class StringProcessing {
    private final int n = 5;
    
      public static void main(String[] args) {
        StringProcessing run = new StringProcessing();
        run.stringMinMax();
        run.middleSize();
        run.differentSymbols();
    }

    public void stringMinMax() {
        String theLongestString = null;
        String theShortestString = null;
        Integer maxLength = null;
        Integer minLength = null;
        Scanner in = new Scanner(System.in);
        
        System.out.println("Enter a string: ");
        String str = in.nextLine();
        maxLength = str.length();
        theLongestString = str;
        minLength = str.length();
        theShortestString = str;
        
        for (int i = 1; i < n; i++) {
            System.out.println("Enter a string: ");
            str = in.nextLine();
            
            if (str.length() > maxLength) { 
                maxLength = str.length();
                theLongestString = str;
            }
            if (str.length() < minLength) {
                minLength = str.length();
                theShortestString = str;
            }
        }   

        System.out.println("The longest string is: " + theLongestString + "\nIts length is: " + theLongestString.length() + "\nThe shortest string is: " + theShortestString + "\nIts length is: " + theShortestString.length());
        in.close();
    }

    public void middleSize () {
        double average=0;
        for(int i=0;i<n;i++) {
            average+=str[i].length();
        }
        average/=n;
        for(int i=0;i<n;i++) {
            if(str[i].length()>average) {
                int j=i+1;
                System.out.println("String "+j+" length "+str[i].length()+": "+str[i]);
            }
        }
    }

    public void differentSymbols () {
        int index=-1;
        boolean a=false;
        for(int i=0;i<n;i++) {
            a = str[i].matches("[1-9]*");
            if(a) {
                if(index==-1) {
                    index=i;
                    a=false;
                } else {
                    System.out.println(str[i]);
                    index=-2;
                    break;
                }
            }
        }
            if(index>=0) {
                System.out.println(str[index]);
            }
        
    }
    
 }

Ответы (1 шт):

Автор решения: Дмитрий

Попробуйте так:

import java.util.Scanner;

public class StringProcessing {
    
    public static void main(String[] args) {
        
        String [] inputStrings = new String[5];
        Scanner in = new Scanner(System.in);
        System.out.println("Enter a string: ");
        int avg = 0, maxLength = 0, minLength = 0;
        for (int i = 0; i < inputStrings.length; i++) {
            inputStrings[i] = in.nextLine();
            avg+=inputStrings[i].length();
            if (inputStrings[maxLength].length()<inputStrings[i].length()) maxLength=i;
            if (inputStrings[minLength].length()>inputStrings[i].length()) minLength=i;
        }
        avg/=inputStrings.length;
        
        //строки минимальной и мксимальной длины
        System.out.println("MinLength : " + inputStrings[minLength]);
        System.out.println("MaxLength : " + inputStrings[maxLength]);
        
        //второе число
        System.out.println("Second number : " + checkNumber(inputStrings, 2));
        
        //длинна больше средней
        for (String str : inputStrings) 
            if (str.length()>avg) System.out.println(str);
        
    }
    
    private static String checkNumber (String [] inputStrings, int count) {
        int numberCount = 0;
        for (String str : inputStrings) 
            if (isNumber(str) && ++numberCount==count) return str;
        return "";
    }    
    private static boolean isNumber (String arg) {
        try {
            new java.math.BigInteger(arg);
            return true;
        } catch (NumberFormatException e) {
            return false;
        }
    }
    
}
→ Ссылка