Нужна помощь в том, чтобы передать строки (str) дальше в методы
Написал программу по обработке строк, которая принимает с консоли 5 строк и делает с ними операции ... по заданию нужно найти:
- Найти самую короткую и самую длинную строки. Вывести найденные строки и их длину.(сделано и работает)
- Вывести на консоль те строки, длина которых больше средней, а также длину.(сделал по аналогии с первым, но не работает)
- Найти слово, состоящее только из цифр. Если таких слов больше одного, найти второе из них.(сделал по аналогии с первым, но не работает)
Я вижу проблему в том, что в два следующих метода не принимают 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;
}
}
}