0

プログラム Main.java があります。

public class Main {
  public static void main() throws FileNotFoundException 
      {       
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      System.out.println("Enter no: \t");
      int sq=0;
      try {
        sq=Integer.parseInt(br.readLine());
    } catch (IOException e) {           
        e.printStackTrace();
    }         
    System.out.println(sq*sq);
  }
}

上記のコード (Main.java) を編集することは想定されておらず、別の Java プログラムからこのプログラムを実行する必要があります。だから、私は次のコードを考え出しました:

public class CAR {
public static void main(String[] args) {
    try {               
        Class class1 = Class.forName("executor.Main"); // executor is the directory in which the files Main.java and CAR.java are placed
        Object object = class1.newInstance();
        Method method = class1.getMethod("main", null);
        method.invoke(object, null);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
}

CAR.java を実行すると、次のような出力が得られます。

Enter no:   
2                  // this is the number I entered through the console
square is:   4

これは問題なく動作しますが、ここでは、コンソールからではなく、Main.java を編集せずにプログラム CAR.java を使用してテキスト ファイルから "sq" (Main.java の変数) に値を入力する必要があります。そして、Main.java を編集せずにこれを行う方法を理解できませんでした。

たとえば、chech.txt の内容が 10 100 の場合、CAR.java を実行して値 10 を読み取り、それを待機中のコンソールに渡して「sq」の値に割り当て、出力を比較します。コンソールに 100 を入力します。CAR.java の出力を「テストに合格しました」と出力します。

これに対する解決策を提案してください。

次のコード スニペットを CAR.java に追加して、ファイルから値を読み取ることができます。

File f = new File("check.txt");
BufferedReader bf = new BufferedReader(new FileReader(f));
String r = bf.readLine();
String[] r1 = r.split(" ");
System.out.println("Input= " + r1[0] + "    Output=  " + r1[1]);
4

1 に答える 1

0

System.setIn() は魔法のようでした...
jvm を指定して、「System.in」から入力を取得する方法を変更します。例:

System.setIn(new FileInputStream("chech.txt"));

これは、コンソールからの入力を待つ代わりに、「check.txt」からの入力を受け取ります。プログラム例:

public class systemSetInExample {

public static void main(String[] args) {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        try {
            System.out.println("Enter input:  ");
            String st=br.readLine();                 // takes input from console
            System.out.println("Entered:  "+st);    

            System.setIn(new FileInputStream("test.txt"));
            br=new BufferedReader(new InputStreamReader(System.in));
            st=br.readLine();                       // takes input from file- "test.txt" 
            System.out.println("Read from file:  "+st); 

    } catch (Exception e) {         
        e.printStackTrace();
    }
}

}

于 2013-12-13T09:09:00.827 に答える