【问题标题】:Feed a Scanner via String通过字符串馈送扫描仪
【发布时间】:2014-11-12 02:14:51
【问题描述】:

这是我的基本目标:将使用 Scanner 和键盘作为输入的程序转换为使用 Scanner 和 java args 作为输入的程序。这将针对各种程序以编程方式完成,因此我想对实际程序本身进行尽可能少的更改。我可以通过改变来做到这一点 Scanner scanner = new Scanner(System.in); 转为 Scanner scanner = new Scanner(args[0]);

现在我可以在args[0] 中用空格分隔每个参数,并且程序运行良好,但前提是它不使用scanner.nextLine()。一旦使用了scanner.nextLine(),scanner 就将整个String 咀嚼起来并破坏程序。

如果不一起更改程序结构,我无法找到解决方法(删除所有scanner.nextLine()s。是否有某种字符/序列会停止scanner.nextLine(),或者它总是会处理整个字符串?

谢谢

编辑:我最初的想法是给扫描仪一个字符串数组并让它通过它,按索引进行索引,无论使用哪种方法(nextnextIntnextLine)。这可能吗?

【问题讨论】:

    标签: java string java.util.scanner args


    【解决方案1】:
    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();
      }
      

    【讨论】:

    • 我实际上已经基本完成了这个项目,我只是有这个错误,然后是一些 GUI 和最终确定的东西。如果 #2 有效,我会使用它。否则我会重新设计并尝试#1。 \n 的想法应该很好用,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    相关资源
    最近更新 更多