Как подсчитать количество символов в строковом значении в массиве, а затем сравнить его с другими, чтобы найти самое длинное?
Сделайте это следующим образом:
if (checkVal < valArray[0].length()) {
checkVal = valArray[0].length();
checkName = valArray[0];
}
Обратите внимание, что length()
используется для определения длины String
.
Некоторые другие важные моменты:
- Вам также нужна переменная хранить сумму всех лет рождения, чтобы вы могли рассчитать их среднее. Кроме того, вы можете вычислить текущее среднее значение.
- Обрезать записи (имя и год рождения) перед выполнением каких-либо операций с ними.
- Не закрывать
Scanner
для System.in
.
Ниже приводится полная программа с примечаниями:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int checkVal = 0;
String checkName = "", name, birthYearStr;
int sum = 0, count = 0;
while (true) {
System.out.print("Provide a name and age in this format: name,#");
String userIn = scanner.nextLine();
if (userIn.equals("")) {
break;
}
String[] valArray = userIn.split(",");
name = valArray[0].trim();
birthYearStr = valArray[1].trim();
if (valArray.length == 2 && birthYearStr.length() == 4) { // Birth year should be of length 4
try {
sum += Integer.parseInt(birthYearStr);
if (checkVal < name.length()) {
checkVal = name.length();
checkName = name;
}
count++;
} catch (NumberFormatException e) {
System.out.println("Birth year should be an integer. Please try again.");
}
} else {
System.out.println("This is an invalid entry. Please try again.");
}
}
System.out.println("Longest name: " + checkName);
System.out.println("Average of birth years: " + (sum / count));
}
}
Примерный прогон:
Provide a name and age in this format: name,#sebastian,2017
Provide a name and age in this format: name,#lucas,2017
Provide a name and age in this format: name,#lily,2017
Provide a name and age in this format: name,#hanna,2014
Provide a name and age in this format: name,#gabriel,2009
Provide a name and age in this format: name,#
Longest name: sebastian
Average of birth years: 2014
Другой пробный прогон:
Provide a name and age in this format: name,#sebastian,201
This is an invalid entry. Please try again.
Provide a name and age in this format: name,#sebastian,hello
This is an invalid entry. Please try again.
Provide a name and age in this format: name,#sebastian,2017
Provide a name and age in this format: name,#lucas,2017
Provide a name and age in this format: name,#lily,2017
Provide a name and age in this format: name,#hanna,2014
Provide a name and age in this format: name,#gabriel,2009
Provide a name and age in this format: name,#
Longest name: sebastian
Average of birth years: 2014
Еще один пробный прогон:
Provide a name and age in this format: name,#hello,2018,sebastian,2017
This is an invalid entry. Please try again.
Provide a name and age in this format: name,#hello,2018
Provide a name and age in this format: name,#sebastian,2017
Provide a name and age in this format: name,#
Longest name: sebastian
Average of birth years: 2017
Другой пробный прогон:
Provide a name and age in this format: name,#sebastian,rama
Birth year should be an integer. Please try again.
Provide a name and age in this format: name,#sebastian,12.5
Birth year should be an integer. Please try again.
Provide a name and age in this format: name,#sebastian,2017
Provide a name and age in this format: name,#abcdefghi,2018
Provide a name and age in this format: name,#rama,2009
Provide a name and age in this format: name,#
Longest name: sebastian
Average of birth years: 2014
Еще один пример:
Provide a name and age in this format: name,#sebastian,2017
Provide a name and age in this format: name,#lucas,2017
Provide a name and age in this format: name,#lily , 2017
Provide a name and age in this format: name,#
Longest name: sebastian
Average of birth years: 2017