简体   繁体   中英

intelliJ IDEA run class with command line argument

I'm going through the Algorithms book by Sedgewick and I can't seem to make my IDE run their programs. The program starts but won't take the passed argument. Specifically I want it to open the tiny.txt file, which I set in Program arguments section but it's just ignored...

在左侧,您可以看到项目结构

我将“ tiny.txt”放入参数部分,但忽略了

import edu.princeton.cs.algs4.In;
import edu.princeton.cs.algs4.StdOut;

public class Selection
{
    public static void sort(Comparable[] a)
    {  // Sort a[] into increasing order.
        int N = a.length;               // array length
        for (int i = 0; i < N; i++)
        {  // Exchange a[i] with smallest entry in a[i+1...N).
            int min = i;                 // index of minimal entr.
            for (int j = i+1; j < N; j++)
                if (less(a[j], a[min])) min = j;
            exch(a, i, min);
        } }
    // See page 245 for less(), exch(), isSorted(), and main().
    private static boolean less(Comparable v, Comparable w)
    {  return v.compareTo(w) < 0;  }

    private static void exch(Comparable[] a, int i, int j)
    {  Comparable t = a[i]; a[i] = a[j]; a[j] = t;  }

    private static void show(Comparable[] a)
    {  // Print the array, on a single line.
        for (int i = 0; i < a.length; i++)
            StdOut.print(a[i] + " ");
        StdOut.println();
    }

    public static boolean isSorted(Comparable[] a)
    {  // Test whether the array entries are in order.
        for (int i = 1; i < a.length; i++)
            if (less(a[i], a[i-1]))  return false;
        return true;
    }
    public static void main(String[ ] args)
    {  // Read strings from standard input, sort them, and print.
        String[] a = In.readStrings();
        sort(a);
        assert isSorted(a);
        show(a);
    }
}

You seem to want standard input redirection. Unfortunately, IntelliJ doesn't support that.

When you supply a command-line argument, all that does is that each word from the argument is passed as a string in the args argument of the main method. You can then write some code in main to open a BufferedReader on that file.

The alternative is to open a terminal window (or Command Prompt window) and type the command line java package.name.ClassName < filename.ext . The command processor or shell interprets the < character as a request to redirect standard input to the supplied file.

Alright this is what needs to be done if you want to use Algorithms code from within intelliJ IDEA on mac OS Sierra:

1, make sure to get and run algs4.app from their website

2, use intelliJ terminal to navigate to algorithms2/out/production/algorithms2 where the .class files reside

3, type in terminal: $ java-algs4 Selection < /Users/mistakeNot/Desktop/Java/algorithms2/tiny.txt

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM