Общей проблемой с выходом консоли Java Java является то, что System.out и System.err обычно не синхронизируются должным образом, возможно потому, что они находятся на разных потоках. Это приводит к вперемешку вывода, такие как следующие: выходВызывает ошибки, которые должны быть правильно упорядочены с помощью println на выходе консоли
отладки вперемешку с выполнения трассировки стека исключений
[8, 1, 3, 5, 9, 13, 15, 17, 19]
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
scanning xAnswer: 1 xValue: 1 total: 1 [1, 1, 0, 0, 0, 0, 0, 0, 0]
at cra.common.Group_jsc.listSubsetSum(Group_jsc.java:29)
scanning xAnswer: 2 xValue: 2 total: 4 [2, 1, 2, 0, 0, 0, 0, 0, 0]
at cra.common.Group_jsc.main(Group_jsc.java:12)
scanning xAnswer: 3 xValue: 3 total: 9 [3, 1, 2, 3, 0, 0, 0, 0, 0]
scanning xAnswer: 4 xValue: 4 total: 18 [4, 1, 2, 3, 4, 0, 0, 0, 0]
scanning xAnswer: 5 xValue: 5 total: 31 [5, 1, 2, 3, 4, 5, 0, 0, 0]
reset to xAnswer: 4 xValue: 5 total: 26 [4, 1, 2, 3, 5, 5, 0, 0, 0]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
scanning xAnswer: 5 xValue: 6 total: 41 [5, 1, 2, 3, 5, 6, 0, 0, 0]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
reset to xAnswer: 4 xValue: 6 total: 35 [4, 1, 2, 3, 6, 6, 0, 0, 0]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
scanning xAnswer: 5 xValue: 7 total: 52 [5, 1, 2, 3, 6, 7, 0, 0, 0]
reset to xAnswer: 4 xValue: 7 total: 45 [4, 1, 2, 3, 7, 7, 0, 0, 0]
scanning xAnswer: 5 xValue: 8 total: 64 [5, 1, 2, 3, 7, 8, 0, 0, 0]
reset to xAnswer: 4 xValue: 8 total: 56 [4, 1, 2, 3, 8, 8, 0, 0, 0]
Process finished with exit code 1
Поскольку исключение произошло в конце процесса я бы ожидать, что печать из Исключение составляет ПОСЛЕ все println в программе. Почему это происходит и что можно сделать, чтобы исправить проблему?
(обратите внимание, что этот конкретный пример из консоли IDEA IntelliJ, но то же самое происходит в Eclipse, и других Java Иды)
Я добавил некоторые детали и ссылки на регистрационные пакеты в своем ответе @Tyler. Как упоминает @fge, в JVM встроен 'java.util.logging'. – Gray
Можете ли вы показать некоторые из кода @Tyler? Вы уверены, что исключение происходит после запуска сканера? Это не в другом потоке? – Gray
@Gray Это не какая-то непонятная проблема. Это затрагивает любого, кто проделал какую-либо работу с Java. Если вы хотите продемонстрировать эффект для себя, просто создайте цикл, который выплескивает много вещей в stdout, а затем выйдет из строя. –