首页 > 解决方案 > 通过方法正确返回和传递/调用变量

问题描述

我有方法 readAccts 并在其中返回变量 numAccts。当我打印到控制台以尝试查看运行时 numAccts 的值时,它显示为 6,根据我的输入文件,这是正确的。但是,我认为当它返回 main 时,它会将自身设置回 0?任何意见表示赞赏,谢谢。

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


public class HW7 {

    public static void main(String[] args) throws IOException{

        File myFile = new File("HW71input.txt"); // Making a new text file for input
        Scanner inputFile = new Scanner(myFile); // Letting it read the file
        PrintWriter outputFile = new PrintWriter("HW71output.txt"); // Creating the text output file


        final int MAX_NUM = 50;

        int[] acctNum = new int[MAX_NUM];
        double[] balance = new double[MAX_NUM];
        int numAccts = 0;
        int maxAccts = 50;
        char myChoice;

        readAccts(acctNum, balance, maxAccts);
        printAccts(acctNum, balance, numAccts, outputFile);
        
        
        do {

            menu();

            myChoice = inputFile.next().charAt(0);

            System.out.println("You chose: " + myChoice);
            System.out.println("");

            switch (myChoice) {

            case 'W':
            case 'w':

                break;

            case 'D':
            case 'd':

                break;

            case 'N':
            case 'n':

                break;

            case 'B':
            case 'b':

                break;

            case 'Q':
            case 'q':

                break;

            case 'X':

                break;

            default:
                
                System.out.println("Wrong Option!");
                break;
            }
            
        } while(inputFile.hasNext());


        inputFile.close();
        outputFile.close();

    }

    public static int readAccts(int[] acctNum, double[] balance, int maxAccts) throws IOException{

        File myFile = new File("initAccts.txt");
        Scanner inputFile = new Scanner(myFile);
        
        int numAccts = 0;
        int j = 0;
        int n = 0;

        while(inputFile.hasNext()) {
            
            acctNum[n] = inputFile.nextInt();
            n++;
            balance[j] = inputFile.nextDouble();
            j++;
            numAccts++;

        }
        
        System.out.println("\n\n\n\n\n" + numAccts);

        inputFile.close();
        return numAccts;

    }

    public static void menu() {

        System.out.println("What action would you want to do?:\n"
                + "W for Withdrawl\n"
                + "D for Deposit\n"
                + "N for New Account\n"
                + "B for Balance\n"
                + "Q to Quit\n"
                + "X for Delete Account\n");
    }

    public static void printAccts(int[] acctNum, double[] balance, int numAccts, PrintWriter HW71output) throws IOException{
        
        for(int i = 0; i < numAccts; i++) {

            HW71output.println("Account Number: " + acctNum[i]);
            HW71output.println("Balance: " + balance[i]);
            HW71output.println("");

        }


    }



}

标签: java

解决方案


您忽略了readAccts. 您需要将其分配给变量以保存它。例如:

numAccts = readAccts(acctNum, balance, maxAccts);

推荐阅读