Java 通过字符串输入扫描仪
我的基本目标是:将使用扫描仪和键盘作为输入的程序转换为使用扫描仪和java参数作为输入的程序。这将以编程方式为各种程序完成,因此我希望对实际程序本身进行尽可能少的小的更改。我可以通过改变来做到这一点Java 通过字符串输入扫描仪,java,string,java.util.scanner,args,Java,String,Java.util.scanner,Args,我的基本目标是:将使用扫描仪和键盘作为输入的程序转换为使用扫描仪和java参数作为输入的程序。这将以编程方式为各种程序完成,因此我希望对实际程序本身进行尽可能少的小的更改。我可以通过改变来做到这一点 Scanner Scanner=新的扫描仪(System.in)进入扫描仪扫描仪=新扫描仪(args[0]) 现在我可以在args[0]中用空格分隔每个参数,程序运行正常,但前提是它不使用scanner.nextLine()。一旦使用scanner.nextLine(),扫描器就会咀嚼整个字符串并中
Scanner Scanner=新的扫描仪(System.in)代码>进入扫描仪扫描仪=新扫描仪(args[0])代码>
现在我可以在args[0]
中用空格分隔每个参数,程序运行正常,但前提是它不使用scanner.nextLine()
。一旦使用scanner.nextLine(),扫描器就会咀嚼整个字符串并中断程序
如果不同时更改程序结构(删除所有scanner.nextLine()
s),我无法找到解决方法。是否存在某种字符/序列会停止scanner.nextLine(),或者它总是处理整个字符串
谢谢
编辑:我最初的想法是给扫描器一个字符串数组,让它一个索引一个索引地扫描,而不管使用哪种方法(next
,nextInt
,nextLine
)。这可能吗
看,这几乎肯定比试图“转换”(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();
}
实际上我基本上已经完成了这个项目,我只是有这个bug,然后是一些GUI和定稿的东西。如果#2起作用,我将使用它。否则我将重新设计并尝试#1。这个想法应该很有效,谢谢!