1

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...

on the left you can see the project structure

i put 'tiny.txt' into the argument section, but its 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); } } 
6
  • You can use the terminal tab and run Java from the command line in IntelliJ, that should have the same effect :-) Commented Jan 7, 2018 at 21:36
  • You're not using args in Selection.main. How are you expecting it to take any notice of command-line arguments? Commented Jan 7, 2018 at 21:39
  • @Welshboy when I try via terminal it just gives me this error: 192:algorithms2 mistakeNot$ java Selection < tiny.txt Error: Could not find or load main class Selection Caused by: java.lang.ClassNotFoundException: Selection Commented Jan 7, 2018 at 21:41
  • @DodgyCodeException this is their code that should work, I haven't changed anything Commented Jan 7, 2018 at 21:43
  • I've also noticed that you're not using the String[] args in your static void main. You're not using anything from the array you're passing in to your main. Commented Jan 7, 2018 at 21:52

2 Answers 2

1

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.

Sign up to request clarification or add additional context in comments.

Comments

1

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.