我正在用Java编写一个使用以下外部库的应用程序:SCPSolver(链接:http://scpsolver.org/)。
该库似乎是c库的包装,并在标准上打印一些信息。我的问题是我希望我的应用程序具有干净的输出:我正在寻找一种实现方法
a。清除控制台,它可以是系统(Windows)控制台或eclipse的控制台;或
b。直线向上,防止库在输出上打印。
关于点a:
我都尝试过使用
Runtime.getRuntime().exec("cls");
和
System.out.print("\033[H\033[2J");
都无效。
我尝试打印“ \ b”字符,但无济于事。在所有这些情况下,我的输出中都会出现乱码。
关于点b:
我尝试将System.out重定向到新的PrintStream,但是它不起作用。这很可能是因为该库是c库的包装,并且c库打印了绕过Java的System.out。因此,我不确定该方法是否有效,因为我无法控制库的工作。我在文档中寻找了一种禁用输出的方法,但尚未发现有用的方法。
可能有用的注释: 打电话
System.out.close();
在要求求解器解决LP问题之前,将阻止显示输出。当然,然后的问题是:我没有更多流可以输出到stdout了。也许解决方案可能是将另一个流添加到同一控制台?虽然我不知道该怎么做。
简而言之:
对lpw.solve()的调用将显示不期望的输出:
LPWizard lpw = new LPWizard();
// ...
LPSolution solution = lpw.solve();
当前输出为:
GLPK Simplex Optimizer,v4.65 4行,4列,8个非零 0:obj = 0.000000000e + 000 inf = 2.700e + 001(4) 3:obj = 1.350000000e + 001 inf = 0.000e + 000(0)最佳LP解决方案x1:4.0 x2:2.5 x3:7.0 x4:0.0
我希望它不会是一个。