Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не могу решить простую задачу) Что делаю не так?

610 Ученик (114), на голосовании 9 месяцев назад
Метод принимает в качестве параметров две строки и возвращает true, если в первой строке больше количество больших символов, чем во второй. В другом случае возвращает false

public class Main {
public static boolean bigLettersCount(String text, String text1) {
for (var i = 0; i<text1.length(); i++) {
var current = text.charAt(i);
var cirrent = text1.charAt(i);
if (Character.toUpperCase(current) > Character.toUpperCase(cirrent)) {
return (true);
}
}return false;
}

public static void main(String[] args) {
Main.bigLettersCount("AM", "EMMrrrr");

}
}
Голосование за лучший ответ
илья белинский Ученик (138) 10 месяцев назад
Ваша ошибка была в том, что вы сравнивали символы из разных строк. Во-вторых, вы не учитывали маленькие буквы при сравнении.

Вот рабочий(не уверен) код:

public class Main {
public static boolean bigLettersCount(String text, String text1){
int textLength = text.length();
int text1Length = text1.length();

for(int i = 0 ; i < textLength ; i++){
char currentChar = Character.toUpperCase(text.charAt(i));
int index = text1Length;
while(index >= 0){
char nextChar = Character.toUpperCase(text1.charAt(index));
if(currentChar == nextChar){
return true;
}
index--;
}
}
return false;
}

public static void main(String[] args){
System.out.println(bigLettersCount("A", "a"));
System.out.println(bigLettersCount("a", "A"));
System.out.
user49913 Просветленный (38737) 10 месяцев назад
примерно всё, ты решаешь какую-то другую задачу

попробуй написать вспомогательную функцию, которая принимает на вход одну строку и возвращает количество заглавных букв в ней, возможно, так будет проще...
Оракул Оракул (62085) 10 месяцев назад
Не надо переводить символы в капс и сравнивать их коды, надо определить капс они или нет изначальна и посчитать их количество
 public class Main { 

public static int bigLettersCount(String text) {
int count = 0;
for (char c : text.toCharArray()) {
if (Character.isUpperCase(c)) {
count++;
}
}
return count;
}

public static boolean bigLettersCount(String text1, String text2) {
return bigLettersCount(text1) > bigLettersCount(text2);
}

public static void main(String[] args) {
System.out.println(bigLettersCount("AM", "EMMrrrr"));
}
}
Unknown Unknown Гуру (4954) 10 месяцев назад
Можно использовать потоки данных
 public class Main { 
public static void main(String[] args) {

}
public static boolean bigLettersCount(String s1,String s2){
return s1.chars().filter(Character::isUpperCase).count()>
s2.chars().filter(Character::isUpperCase).count();
}

}
ОракулОракул (62085) 10 месяцев назад
Можно, но рано. Человек третий день всего лишь начал.
Похожие вопросы