Это первый раз, когда я использую Test Driven Development, и я делаю небольшой калькулятор, но из строк, чтобы сделать его более интересным. Затем строка разбивается и отдельные цифры подсчитываются.
К сожалению, я сталкиваюсь с этой проблемой при добавлении двух одинаковых номеров. Последовательность 2,3,7,5,3. Мои первые 3 сравниваются с моими последними 3, которые занимают последнюю позицию в массиве. Я постоянно проверяю, является ли этот символ последним в массиве. Но я имею в виду проверку позиционирования, а не самого фактического значения.
Обратите внимание, что строки уже обрезаны, то есть они не содержат пробелов.
Перед использованием массивов я использовал CharacterItorator. К сожалению, я не смог справиться и решил, смогу ли я получить ответ с помощью надежных массивов. Мне удалось решить другие последовательности, но с неповторяющимися числами в качестве последней цифры.
Ввод в строке: «2,3,7,5,3». Ответ должен быть 20, но в результате получается 23
public int inputIterator(String input){
int currentCount = 0, tempCount;
String currentString = "";
char[] chars = input.toCharArray();
for (char ch : chars){
if(ch != ','){
// it is a number
if(ch == chars[chars.length-1]) {
currentString = currentString + ch;
tempCount = Integer.parseInt(currentString);
currentCount = currentCount + tempCount;
} else {
currentString = currentString + ch;
}
} else {
// It is a ','
if(ch == chars[chars.length-1]){
tempCount = Integer.parseInt(currentString);
currentCount = currentCount + tempCount;
} else {
if(currentString != ""){
tempCount = Integer.parseInt(currentString);
currentCount = currentCount + tempCount;
currentString = "";
} else {
// do nothing
}
}
}
}
return currentCount;
}
В ходе теста ожидается, что результатом этой последовательности будет 20. Но получен ответ 23, что связано с повторяющейся цифрой.
РЕДАКТИРОВАТЬ: изменил мою ЛОГИКУ;Ответы, приведенные в комментариях, действительно работают - но я все еще хотел попробовать свой собственный спин
public int inputIterator(String input){
int currentCount = 0, tempCount;
String currentString = "";
int loopCounter = input.length();
char[] chars = input.toCharArray();
for(int i = 0; i < loopCounter; i++){
if(chars[i] != ','){
// it is a number
if(i == loopCounter-1) {
currentString = currentString + chars[i];
tempCount = Integer.parseInt(currentString);
currentCount = currentCount + tempCount;
} else {
currentString = currentString + chars[i];
}
} else {
// It is a ','
if(i == loopCounter-1){
tempCount = Integer.parseInt(currentString);
currentCount = currentCount + tempCount;
} else {
if(currentString != ""){
tempCount = Integer.parseInt(currentString);
currentCount = currentCount + tempCount;
currentString = "";
} else {
// do nothing
}
}
}
}
return currentCount;
}