Balanced Numbers - Mock exam 1

Здравейте. Опитвам се да реша задачата Balanced Numbers от Mock exam 1.

Проблема е че кодът ми работи в IntelliJ и всеки online compiler. Но при submission получавам 0/0

Кодът е абсолютно еднакъв с този който тествам от моята страна. (Copy/Paste)

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List numbers = new ArrayList<>();
long result = 0;

    while (true){
        String input=scanner.nextLine();

        if (input.equals("")){
            break;
        }
        numbers.add(input);
    }

    for (String number: numbers) {
        long number1 = Character.getNumericValue(number.charAt(0));
        long number2 = Character.getNumericValue(number.charAt(1));
        long number3 = Character.getNumericValue(number.charAt(2));
        if (number1+number3 == number2){
            result += Long.parseLong(number);
        }
    }

    System.out.println(result);
}

}

Debug-вах, променях кода по всевъзможни начини, различни структури от данни и променливи. Винаги става така че output-a при всякакъв тест е правилен в IntelliJ и няколко online compiler-и, но при submission Status: Invalid Return.

Благодаря предварително.

Малко ти изчистих решението, но ако пак не минава опитай да парсваш входа директно, а не с Character.getNumericValue и по условие мисля, че трябва да спреш когато получиш небалансирано число, а не празен стринг.
Аз не мога да го пробвам дали ще мине понеже съм на C#

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
int result = 0;

    while (true) {
        int number1 = Character.getNumericValue(input.charAt(0));
        int number2 = Character.getNumericValue(input.charAt(1));
        int number3 = Character.getNumericValue(input.charAt(2));
        if (number1 + number3 == number2) {
            result += Integer.parseInt(input);
        } else {
            break;
        }
        input = scanner.nextLine();
    }
    System.out.println(result);
}

Здравей,

Решението на @vst7830 е коректно.
Пропуснати са само първите два реда:

@stoyanstoyanov945006 бих искал да обърна внимание на няколко аспекта от твоя код:

  1. Не определяш типът на List:

List numbers = new ArrayList<>();
, което води до грешка при извикването на елементите във for цикъла:

for (String number: numbers)

Винаги уточнявай от какъв тип ще ти е листа. В случат той трябва да се състои от String елементи и правилният запис е:

List<String> numbers = new ArrayList<>();

  1. Неправилно определно условие, при което да спре while цикъла:
if (input.equals("")){
    break;
}

Правилното, споделено от @vst7830:

if (number1 + number3 == number2) {
    result += Integer.parseInt(input);
} else {
    break;
}

Споделям и мое решение без стринг:

П.С. Може да тествате и решения на друг език:

Поздрави,
Чаво