通过字符串输入扫描仪

时间:2014-11-12 02:14:52

标签: java string java.util.scanner args

继承我的基本目标:将使用扫描仪和键盘作为输入的程序转换为使用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吗?

由于

编辑:我最初的想法是给扫描程序一个字符串数组,让它按索引索引,无论使用哪种方法(nextnextInt,{{1} })。这可能吗?

1 个答案:

答案 0 :(得分:2)

  1. 看看Apache Commons CLI,几乎肯定会比尝试转换"更好。 (kludge)目前正在使用Scanner的程序。

  2. 如果确实需要,可以在命令行参数中插入换行符。

    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();
    }