继承我的基本目标:将使用扫描仪和键盘作为输入的程序转换为使用Scanner和java args作为输入的程序。这将以编程方式针对各种程序进行,因此我希望对实际程序本身进行尽可能少的更改。我可以通过改变来做到这一点
Scanner scanner = new Scanner(System.in);
Scanner scanner = new Scanner(args[0]);
。{/ p>
现在我可以用args[0]
中的空格分隔每个参数,程序运行正常,但只有在它没有使用scanner.nextLine()
时才能运行。一旦使用scanner.nextLine(),扫描程序就会清除整个String并中断程序。
我无法在不改变程序结构的情况下找出解决方法(删除所有scanner.nextLine()
s。是否有某种字符/序列会停止scanner .nextLine(),或者它会一直处理整个String吗?
由于
编辑:我最初的想法是给扫描程序一个字符串数组,让它按索引索引,无论使用哪种方法(next
,nextInt
,{{1} })。这可能吗?
答案 0 :(得分:2)
看看Apache Commons CLI,几乎肯定会比尝试转换"更好。 (kludge)目前正在使用Scanner的程序。
如果确实需要,可以在命令行参数中插入换行符。
public static void main( String[] args )
{
StringBuilder cla = new StringBuilder();
for( String command : args ) {
cla.append( command );
cla.append( '\n' ); // newline
}
String finalCommand = cla.toString();
}