通过命令行java读取标准输入

时间:2015-10-12 18:06:04

标签: java input standards

我正在参加Sedgwick(普林斯顿大学)的课程算法1,并尝试从标准输入读取一个整数,表示将输入的整数对的数量,然后是标准输入的整数对列表。

例如:

3                     //first integer represents number of pairs

12  34                  //list of integer pairs

23  56

34  78

我希望输入:

java  myProg   3  12   34  23  56   34  78  

在Windows命令行的命令提示符下首先读取3,然后循环并依次处理每一对。

视频中的代码是:

package getArgs;

public class getInput {

public static void main(String[] args) {
    int N = StdIn.readInt();   //read first integer 
    while (!Stdin.isEmpty()){  // loop through pairs
        int p = StdIn.readInt();
        int q = StdIn.readInt();
        //process p and q      //process each pair

    }


}

问题:

  1. 在代码中是Stdin.readInt()实际的java还是伪代码?

  2. 如果不是伪代码,我是否需要导入库以访问StdIn?

  3. 如果是伪代码,我是否使用Scanner类替换StdIn.readInt()?

  4. 程序的其余部分正常工作,那就是联合查找类算法,这个测试程序的驱动程序没有得到很好的解释并让我感到困惑。

    这是我修改后的尝试 - 这很丑陋

    public class getInput {
    
    
    
    public static void main(String[] args) {
    
        int i = 0;  //counter;
        int N = 0;  
    
    
        N = Integer.parseInt(args[0]);  //Read first Integer 
        System.out.println(N );         //check it works
        i = i + 1;
    
        while ( i < N * 2 ){
    
            int p = Integer.parseInt(args[i]);  //get first of the next pair
            i=i + 1;
            int q = Integer.parseInt(args[i]);  //get second of the next pair
            System.out.println(p + "  " + q );  //check
    
    
        }
    
    
    }
    

    这有效但比StdIn更难 - 任何人都可以使用StdIn重写它以便java识别StdIn吗?

7 个答案:

答案 0 :(得分:1)

我谷歌搜索StdIn java,第二个结果是您所在大学的域名链接:http://introcs.cs.princeton.edu/java/stdlib/javadoc/StdIn.html

Google是你的朋友。

答案 1 :(得分:1)

让我们通过调用$(document).ready(function(){ //..your tab changing code.. }); 尝试使用以下代码,看看会发生什么。

java getInput 10 12 34 23 56 34 78

这与Pshemo已经评论过的内容有关。

答案 2 :(得分:1)

(@ snickers10m做过的研究!)

在代码中是Stdin.readInt()实际java还是伪代码?

实际Java代码。从docs Stdin.readInt执行此操作:

  

从标准输入读取下一个标记,将其解析为整数,然后   返回整数。

如果它不是伪代码,我是否需要导入一个库来访问StdIn?

取决于Stdin.javaStdin.class如何传递给您。如果它不在同一个包中,并且import为它,那么你的类路径应该只有Stdin.class

(编辑:搜索更多内容,找到http://introcs.cs.princeton.edu/java/15inout/

来自文档:

  

要使用这些库,请下载StdIn.javaStdOut.java,   StdDraw.javaStdAudio.java与您的目录位于同一目录中   程序

如果是伪代码,我是否使用Scanner类替换StdIn.readInt()?

N / A,因为它是实际代码

使您的代码与StdIn

一起使用

(编辑问题之后。)

您应该将程序从包中移出到与StdIn相同的包中

答案 3 :(得分:0)

查看此链接here,其中显示Stdin实际上是Scanner的包装类。如果你有,你可以使用它,否则使用扫描仪。如果你没有它,只需从该链接获取它并将其作为应用程序的一部分进行编译。

但是如果你将它们作为args []发送,你就不需要它了,你可以在其中引用字符串值为args 1,args [2]等等。

答案 4 :(得分:0)

在代码中是Stdin.readInt()实际的java还是伪代码?

那是伪代码。 Stdin不是JRE的Java类。

如果是伪代码,我是否使用Scanner类替换StdIn.readInt()?

使用System的InputStream会更好。以下是如何实现它的一个简单示例:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter String");
String s = br.readLine();
System.out.print("Enter Integer:");
try{
    int i = Integer.parseInt(br.readLine());
    // ...
} catch(NumberFormatException nfe){
    nfe.printStackTrace();
    System.exit(-1);
}

答案 5 :(得分:0)

好的,我得到了它的工作,窃笑的评论是正确的。 StdIn课程由Sedgewick编写,并在他早期的书中发表。我只是创建了类StdIn和StdOut并将代码从互联网复制到空类文件中,然后就可以了。总结一下,它是由教授创建的一个类,用于简化从命令行的读取。

答案 6 :(得分:0)

为学生提供标准(标准图书馆) 它不是&#34;已安装的java库&#34;所以你可以下载Std库并在你的路径中声明它然后它可以工作

相关问题