0

あるクラスからファイル入力を取得し、別のクラスで使用するというこの問題が発生しています。何が起こるかというと、txt ファイルの行を読み取る readFile.java というファイルがあります。ファイル入力を使用したいスタックを評価するために使用している別のファイルがあります。全体として、evalStack.java ファイルの testInput 文字列を readFile.java からのファイル入力に置き換える方法を見つけようとしています。

readFile.java は次のとおりです。

import java.util.Scanner;

import java.io.*;

public class readFile {
    String fname;

    public readFile() {
        System.out.println("Constructor");
        getFileName();
        readFileContents();
    }

    public void readFileContents()
    {
        boolean looping;
        DataInputStream in;
        String line;
        int j, len;
        char ch;

        /* Read input from file and process. */
        try {
            in = new DataInputStream(new FileInputStream(fname));

            looping = true;
            while(looping) {
                /* Get a line of input from the file. */
                if (null == (line = in.readLine())) {
                    looping = false;
                    /* Close and free up system resource. */
                    in.close();
                }
                else {
                    System.out.println("line = "+line);
                    j = 0;
                    len = line.length();
                    for(j=0;j<len;j++){
                        System.out.println("line["+j+"] = "+line.charAt(j));
                    }
                }
            } /* End while. */

        } /* End try. */

        catch(IOException e) {
            System.out.println("Error " + e);
        } /* End catch. */
    }

    public void getFileName()
    {
        Scanner in = new Scanner(System.in);

        System.out.println("Enter file name please.");
        fname = in.nextLine();
        System.out.println("You entered "+fname);
    }
}

これは evalStack.java です。

import java.util.Scanner;
import java.io.*;

public class evalStack {

    static String testInput = "(6+3) + (3-2)";
    //This is the line I want to replace with the input the readFile gives me.

    public static void main(String[] args){

        int maxLength = testInput.length();
        stackOb eval = new stackOb(maxLength);
        boolean test = false;

        //Evaluate and check parenthesis
        for(int i = 0; i < testInput.length(); i++)
        {
            char a = testInput.charAt(i);

            if(a=='(')
            {
                eval.push(a);
            }
            else if(a==')')
            {
                if(eval.empty() == false)
                {
                    eval.pop();
                }
                else
                {
                    test = true;
                    System.out.println("The equation is a not valid one.");
                    System.exit(0);
                }
            }
            else
            {
                continue;
            }
        }
        if(eval.empty() == true && test == false)
        {
            System.out.println("The equation is a valid one.");
        }
        else
        {
            System.out.println("The equation is a not valid one.");
        }
    }
4

1 に答える 1

0
  1. import readFile;evalStack.java の先頭に行を追加します
  2. 入力を変更:static String testInput = new readFile().readFileContents();
  3. 戻り値の型を変更:public String readFileContents()
  4. j = 0;と置き換えますreturn line;

これにより、最初の行が評価されます。

于 2013-10-07T03:17:20.310 に答える