Java通过Command传递一个int

时间:2015-11-11 23:39:50

标签: java

public static void main(String[] args) throws FileNotFoundException {
    Scanner sc = new Scanner(new FileReader(args[1]));
    String co = sc.next();
    coup = Integer.parseInt(co);

当我尝试将int传递到命令行中的第二个参数时,我得到一个FileNotFoundException。这只是代码的一部分,文本文件作为args [0]传递。但是,我无法弄清楚如何传递一个简单的整数,只有文本文件。

3 个答案:

答案 0 :(得分:1)

            WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            Display display = wm.getDefaultDisplay();
            Point size = new Point();
            display.getSize(size);
            int height = size.y;
            currentlyViewHolder.view.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, height));

您声明文本文件是第一个参数(args [0]),因此在扫描程序中指定它并且在获取整数时,您需要做的就是将args [1]发送到Integer.parseInt方法。您将获得异常,因为您正在为FileReader对象分配传入的整数的文件名。

答案 1 :(得分:0)

您无法通过int,但您可以解析一个:

public static void main(String[] args) {
    String filename = args[0];
    int i = Integer.parseInt(args[1]);
    // ...
}

如果你得到FileNotFoundException,一种简单的调试方法是:

File file = new File(filename);
System.out.println(file.getAbsolutePath());

问题出在哪里很明显,几乎总是应用程序的当前目录不是你想象的那样。

答案 2 :(得分:0)

查看您的代码,内容如下:

  1. 创建扫描程序以在第一个命令行参数
  2. 中读取文件
  3. 从该扫描仪获取第一个整数作为字符串
  4. 将String解析为int
  5. 显然需要对第一个参数中的文件进行排序,看起来像是预期的。

    创建一个名为number.txt的文件:

        var commentsRef = new Firebase("https://awesome.firebaseio-demo.com/comments");
        var linkRef = new Firebase("https://awesome.firebaseio-demo.com/links");
        var linkCommentsRef = linkRef.child(LINK_ID).child("comments");
        linkCommentsRef.on("child_added", function(snap) {
          commentsRef.child(snap.key()).once("value", function() {
            // Render the comment on the link page.
          });
        });
    

    NumberPrinter.java:

    42
    

    运行如下:

    import java.io.Scanner;
    import java.io.FileReader;
    
    public final class NumberPrinter {
        public static void main(String[] args) throws Exception {
            Scanner scanner = new Scanner(new FileReader(args[1]));
            String numberInFile = scanner.next();
            int number = Integer.parseInt(numberInFile);
            System.out.println(number);
        }
    }
    

    它会打印出来:

    java NumberPrinter number.txt
    

    或者,如果您打算直接从命令行参数解析int,请尝试:

    42
    

    NumberOrFilenameAwkward.java:

    public final class NumberPrinterDirect {
        public static void main(String[] args) throws Exception {
            int number = Integer.parseInt(args[0]);
            System.out.println(number);
        }
    }
    

    这是一个糟糕的解决方案,并且使用命令行解析库(如JewelCLI或commons-cli)来干净利落地解决它。