Как используется ключевое слово split()? Что более простое преобразование String в String [] (массив)?

-4

Шеф-повар написал текст на листе бумаги, и теперь он хочет узнать, сколько дыр в тексте. Что такое дыра? Если вы думаете о бумаге как плоскости и букве как кривой на плоскости, то каждая буква делит плоскость на области. Например, буквы "A", "D", "O", "P", "R" делят плоскость на две области, поэтому мы говорим, что эти буквы имеют одно отверстие. Аналогично, буква "B" имеет два отверстия, и буквы, такие как "C", "E", "F", "K", не имеют отверстий. Мы говорим, что количество отверстий в тексте равно общему числу отверстий в буквах текста. Помогите шеф-повару определить, сколько отверстий в тексте. вход

Первая строка содержит одно целое число T <= 40, количество тестовых случаев. T испытаний. Единственная строка каждого тестового примера содержит непустой текст, состоящий только из прописных букв английского алфавита. Длина текста меньше 100. На входе нет пробелов. Вывод

Для каждого тестового примера выводите одну строку, содержащую количество отверстий в соответствующем тексте. пример

Вход: 2 CODECHEF DRINKEATCODE

Выход: 2 5

Моя программа не работает, как это предполагается. Я думаю, что он должен работать нормально, но это отображает значение счетчика как 0, независимо от используемого условия.

import java.util.Scanner;

public class holes {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);
int t;
String[][] array = new String[40][100];
int[] counter = new int[40];

System.out.println("Enter The Test Cases");
t = scan.nextInt();

for(int w =0; w<t;w++ ){
String input = scan.next();
array[w] = input.split("(?!^)");

for(int a=0;a<array[w].length;a++ ){

if(array[w][a] =="A"||array[w][a] =="P"||array[w][a] =="D"||array[w][a] =="O"||array[w][a] =="R"){
counter[w]++;
System.out.println(array[w][a]);
}
else if(array[w][a]=="B"){
counter[w]=counter[w]+2;
System.out.print(counter[w]+"\n");
}
}

}

for(int e=0;e<t;e++ ){
System.out.println(counter[e]);
}
scan.close();
}

}

спросил(а) 2015-04-11T21:22:00+03:00 5 лет, 1 месяц назад
0
64

Вы должны разделить код на методы, чтобы сделать его более простым. Например, у вас есть метод, который учитывает отверстия для одной строки:

private static int countHoles(String s) {
int count = 0;
for (char c : s.toCharArray()) {
if ("ADOPQR".indexOf(c) != -1) {
count++;
} else if (c == 'B') {
count += 2;
}
}
return count;
}

// or:

private static int countHoles(String s) {
return s.chars().map(c -> c == 'B' ? 2 : "ADOPQR".indexOf(c) != -1 : 1 : 0).sum();
}

Затем вы можете просто распечатать результат из countHoles для каждого входа, который вы можете просто получить с помощью split(" ") вместо того, чтобы хранить их в массиве.

ответил(а) 2015-04-11T21:35:00+03:00 5 лет, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема