jeudi 10 octobre 2019

Two repeating characters on the same array being checked if it is in the last position. But one of the characters is in the last position

This is the first time I am using Test Driven Development and I am making a small calculator but from strings to make it more interesting. The string is then broken down and the individual digits are counted up.

Unfortunatly I am running into this issue when adding two identical numbers. The sequence is 2,3,7,5,3. My first 3 is getting compaired to my last 3 which occupies the last position in the array. I make a continous check to see if the character is the last character in the array. But what I mean is checking the positioning and not the actual value itself.

Please note the strings are already trimmed, meaning they contain no spaces.

Before using arrays I had used the CharacterItorator. Unfortunatly I could not manage and decided if I could get the answer with trusty arrays. I managed to solve other sequences, but with non-repeating numbers as the last digit.

Input in string: "2,3,7,5,3". The answer should be 20, but its resulting in 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;
    }

The test expects the result of this sequence to be 20. But the answer provided is 23, which is because of the repeating digit.

Aucun commentaire:

Enregistrer un commentaire