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(),扫描器就会咀嚼整个字符串并中

我的基本目标是:将使用扫描仪和键盘作为输入的程序转换为使用扫描仪和java参数作为输入的程序。这将以编程方式为各种程序完成,因此我希望对实际程序本身进行尽可能少的小的更改。我可以通过改变来做到这一点
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。这个想法应该很有效,谢谢!