1. Можно перенаправить стандартные потоки ввода/вывода при запуске C# программы и потом считать результаты уже в java программе. Это найболие красивый и эффективный способ на мой взгляд. Так как не нужно ничего менять в самой C# программе.
2. Писать все в файл, а не в консоль для C# и потом открыть его в Java.
3. Сделать для кажной ошибки свой возврат в C#, т.е. не только 0, 1, а 2, 3, 4 и т.д. каждая ошибка под своим номером.
UPD. По поводу 3 варианта:
namespace program1
{
class Program
{
static int Main(string[] args)
{
try
{
if (args.Length != 0)
{
foreach (string s in args)
{
Console.WriteLine(s);
}
}
else
{
Console.WriteLine("Возникла ошибочка!");
}
}
catch (DivideByZeroException ex)
{
return 3;
}
catch (FormatException ex)
{
return 2;
}
catch (Exception ex)
{
return 1;
}
}
}
}
Здесь мы изменяем тип который возвращает main с void на int и потом, в зависимости от исключения, возвращаем разные значения из main.