输出超大尺寸2D阵列

时间:2018-12-17 20:56:02

标签: java arrays multidimensional-array

我正在做作业(不,我不是要你们帮我做,我只需要一小部分帮助) 基本上,我有一个超大尺寸的2D数组,需要在用户选择时输出。 到目前为止,我将包括所有代码,但请注意,这太长了。我将不胜感激,谢谢

import java.util.Scanner;
import java.io.FileInputStream;
import java.io.IOException;

public class customerDatabase {

    public static Scanner scnr = new Scanner(System.in);

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

        FileInputStream fileByteStream = new FileInputStream("myfile.txt");
        Scanner inFS = new Scanner(fileByteStream);
        char choice = 'z';
        int i = 0;
        String[][] customerInfo = new String[100][5];
        int arrayLength = 0;

        while(inFS.hasNext()){
            customerInfo[i][0]=inFS.next(); //first name
            customerInfo[i][1]=inFS.next(); //last name
            customerInfo[i][2]=inFS.next(); //email
            customerInfo[i][3]=inFS.nextLine(); //phone number
            ++i;
            ++arrayLength;
        }

        while(choice != 'q'){
            choice = printMenu();
        }if(choice == 'o'){
            outputDatabase(customerInfo,arrayLength);
        }


    }

    public static char printMenu(){

        char userChar = 'z';
        String choiceString;

        System.out.println();
        System.out.println("MENU");
        System.out.println("o - Output customer database");
        System.out.println("s - Sort by name");
        System.out.println("a - Add a customer");
        System.out.println("r - Remove a customer");
        System.out.println("u - Update customer information");
        System.out.println("f - Find a customer");
        System.out.println("q - Quit");
        System.out.println();

        while((userChar != 'o') && (userChar != 's') && (userChar!= 'a') && (userChar != 'r') && (userChar != 'u') &&(userChar != 'f') && (userChar!= 'q')){
            System.out.println("Choose an option:");
            choiceString = scnr.nextLine();
            userChar = choiceString.charAt(0);
        }

        return userChar;

    }

    public static void outputDatabase(String[][] userArray, int arraySize){
        int i;
        int j;

        for(i=0; i < arraySize; ++i) {
            for(j=0; j < arraySize; ++j) {
                System.out.print(userArray[i][j]);
            }
        }
    }
}

然后有一个文本文件,其中包含姓名,电子邮件和电话号码(这是插入到正在输出的数组中的内容)。

1 个答案:

答案 0 :(得分:1)

  

基本上我有一个超大的二维数组,当   用户选择要使用它。

您具有四个属性,即名,姓,电子邮件和电话号码,因此,您的内部循环应仅从索引0到索引3,

for(int i=0; i < arraySize; ++i) {
    for(int j=0; j < 4; ++j) {
        System.out.print(userArray[i][j]);
    }
}

当前,您将其设置为arraySize,如果arraySize大于4,将导致异常。