2016-08-25 13 views
0

txtファイルを使ってsudoku answerを挿入します。Javaの入力ファイル

"プログラムをテストするときには、入力をファイル、例えばCheckSudokuSolution.txtに保存することができます(www.cs.armstrongを参照してください)。 EDU /亮/データ/ CheckSudokuSolution.txt)、および以下のコマンドを使用してプログラムを実行します。私は私のjavaファイルと同じディレクトリにCheckSudokuSolution.txtファイルを保存し、数回試みたが、

java CheckSudokuSolution < CheckSudokuSolution.txt" 

エラー、次のコマンドprompショー:

"Error : The system can not find the file specified". 

import java.util.Scanner; 

public class CheckSudokuSolution { 
    public static void main(String[] args) { 
     // Read a Sudoku solution 
     int[][] grid = readASolution(); 

     System.out.println(isValid(grid) ? "Valid solution" : 
     "Invalid solution"); 
    } 

    /** Read a Sudoku solution from the console */ 
    public static int[][] readASolution() { 
     // Create a Scanner 
     Scanner input = new Scanner(System.in); 

     System.out.println("Enter a Sudoku puzzle solution:"); 
     int[][] grid = new int[9][9]; 
     for (int i = 0; i < 9; i++) 
      for (int j = 0; j < 9; j++) 
       grid[i][j] = input.nextInt(); 

     return grid; 
    } 

    /** Check whether a solution is valid */ 
    public static boolean isValid(int[][] grid) { 
     for (int i = 0; i < 9; i++) 
      for (int j = 0; j < 9; j++) 
       if (grid[i][j] < 1 || 
        grid[i][j] > 9 || 
        !isValid(i, j, grid) 
       ) 
        return false; 
       return true; // The solution is valid 
    } 

    /** Check whether grid[i][j] is valid in the grid */ 
    public static boolean isValid(int i, int j, int[][] grid) { 
     // Check whether grid[i][j] is unique in i's row 
     for (int column = 0; column < 9; column++) 
      if (column != j && grid[i][column] == grid[i][j]) 
       return false; 

    // Check whether grid[i][j] is unique in j's column 
    for (int row = 0; row < 9; row++) 
     if (row != i && grid[row][j] == grid[i][j]) 
      return false; 

    // Check whether grid[i][j] is unique in the 3-by-3 box 
    for (int row = (i/3) * 3; row < (i/3) * 3 + 3; row++) 
     for (int col = (j/3) * 3; col < (j/3) * 3 + 3; col++) 
      if (row != i && col != j && grid[row][col] == grid[i][j]) 
       return false; 

    return true; // The current value at grid[i][j] is valid 
    } 
} 

どのように私はコマンドラインを使用してCheckSudokuSolution.txtファイルでこのjavaプログラムをコンパイルできますか?

+1

"_Error:指定されたファイルが見つかりません"はJavaエラーではありません。 –

+1

あなたが読んでいる指示は、**あなたがそれをコンパイルした後に**コードを実行する方法を教えています。それをコンパイルすることについてのあなたの質問は、理にかなっていません。あなたがもっている可能性が最も高い問題は、データファイルの名前に単純なタイプミスがあることです。ファイルが保存されている名前と、コマンドラインでその名前を参照するために使用している名前を揃えるには、非常に慎重に(コピーと貼り付けをよくしてください)チェックしてください。 – jwpfox

答えて

0

ファイルは、Javaコマンドを実行しているディレクトリと同じディレクトリにある必要があります。

あなたのクラスは、ディレクトリclassesにいるのであれば、あなたは、次のコマンドを実行する必要があります:あなたのコードに基づいて

java -cp ./classes CheckSudokuSolution < CheckSudokuSolution.txt

0

、私は、コンソールからの入力を取り、grid[][]にそれを置くことを理解しています。しかし、私はあなたが入力としてファイル名を望んで、ファイルからそれを読むと思います。

try{ 
    BufferedReader reader = new BufferedReader(new FileReader(new File("<absolute path of CheckSudokuSolution.txt>"))); 
} catch(FileNotFoundException fe) { 
    fe.printStackTrace(); 
} finally { 
} 
0

どのコマンドを入力していますか?

私は、彼らがようになるはずだと思うでしょうが、以下:

java CheckSudokuSolution < CheckSudokuSolution.txt

をこれがの.classファイルを作成するには、最初のコードをコンパイルした後に行われることになります。この2つの異なるステップで行われることに注意してください:

  • のjavacコマンドを使用してコンパイルします。
  • javaコマンドを使用して実行します。

のみ第2のステップは、テキスト入力ファイルを使用します、そして我々は、入力としてCheckSudokuSolution.txtファイルを使用して私たちのプログラムを実行していると言うことは、より正確だろう。それをコンパイルするよりもむしろ。

この例では、文字<は、ファイルの内容を標準入力としてプログラムに渡すために使用されます。これはリダイレクトと呼ばれ、詳細についてはonlineがあります。ここでのポイントは、ファイルを見つけるのに問題があるjavaではなく、あなたが現在いるディレクトリを調べるシェルだということです。

したがって、ディレクトリに.classファイルまた、.txt入力データも表示されます。それらが別々のフォルダにある場合は、javaコマンドの-cp引数を調べて、クラスファイルの場所を指定することができます。