Reputation: 783
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...
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);
}
}
Upvotes: 1
Views: 5916
Reputation: 783
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
Upvotes: 1
Reputation: 11621
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.
Upvotes: 1