Как использовать return с массивами?

1

Поэтому я пытаюсь передать переменные числа в метод printArray, но я не совсем уверен, как это сделать. Очевидно, я не делаю это правильно, но может ли кто-нибудь указать мне в правильном направлении? Заранее спасибо.

import java.io.*;
import java.util.Scanner;
public class Paniagua_ArrayProcessing{
    public static void main(String[] args) throws IOException{
            int[] numbers = new int[4];
            inputData();
            printArray(numbers);
    }
    public static int[] inputData() throws IOException{
            Scanner keyboard = new Scanner(System.in);
            String input;
            int lines;
            System.out.println("Please enter a file name: ");
            input = keyboard.nextLine();
            File myfile = new File(input);
            if (!myfile.exists()){
                    System.out.println("File not found.");
                    System.exit(0);
            }
            Scanner inputFile = new Scanner(myfile);
            lines = inputFile.nextInt();
            int[] numbers = new int[lines];
            for (int i=0; i<lines; i++){
                    if (inputFile.hasNextInt()){
                            int moreLines = inputFile.nextInt();
                            numbers[i] = moreLines;
                    }
            }
            inputFile.close();
            return numbers;
    }
        public static void printArray(int[] array){
                System.out.println(array[3]);
    }

}
Теги:
arrays
int

2 ответа

2
Лучший ответ

вместо

 int[] numbers = new int[4];
 inputData();

просто

int[] numbers =  inputData();

Вы создаете массив, то вы снова создаете в inputData() и заполнение в нем данные и возвращает опорное значение так, первая инициализация бесполезно здесь

  • 0
    большое спасибо! Я приму ваш ответ, когда это позволит мне.
  • 0
    Добро пожаловать
0

Я не понимаю, на что вы хотите, что вы здесь делаете. Я предполагаю, что вы хотите прочитать все числа из файла и распечатать массив "Всего".

Целочисленная переменная "цифры" не инициализирована значениями, считанными из файла, и, следовательно, вы не увидите никакого вывода. Если вы запустите этот код. Чтобы исправить это, вам нужно назначить переменную int [], возвращенную из метода, вызовом inputData() в "numbers" Variable. Я обновил эти изменения и протестировал код в файле примера, содержащем данные. 1 2 3 4 5 Это работало отлично для меня. Надеюсь, это поможет вам.

Примечание. Числа в методе Main и inputData() разные.

package test;

import java.io.*;
import java.util.Scanner;
public class test{
    public static void main(String[] args) throws IOException{
        int[] numbers = inputData();
        printArray(numbers);
    }
    public static int[] inputData() throws IOException{
        Scanner keyboard = new Scanner(System.in);
        String input;
        int lines;
        System.out.println("Please enter a file name: ");
        input = keyboard.nextLine();
        File myfile = new File(input);
        if (!myfile.exists()){
            System.out.println("File not found.");
            System.exit(0);
        }
        Scanner inputFile = new Scanner(myfile);
        lines = inputFile.nextInt();

        //Find the Number of Lines
        int count = 0;
        while (inputFile.hasNextLine()){
                    count++;
                    inputFile.nextLine();
                }
        int[] numbers = new int[count];
        inputFile.close();
        inputFile = new Scanner(myfile);
        for (int i=0; i<count; i++){
            if (inputFile.hasNextInt()){
                numbers[i] =  inputFile.nextInt();
            }
        }
        inputFile.close();
        keyboard.close();
        return numbers;      
    }
    public static void printArray(int[] array){
        for(int i=0;i<array.length;i++) {
        System.out.println(array[i]);
        }
    }

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню