2013-02-20 1 views
0

Я изучаю Java, и я работаю над этим упражнением в течение 2 дней. Я заработал интернет для ответов, но я не могу найти лучший способ решить мою проблему: 1. Как сохранить ввод строк (например, fName, mName // или я делаю это правильно?) в двумерный массив. Я видел некоторые примеры программ с синтаксисом, как:Java 2-мерный массив записи записи учащихся

fName = fName.getText(); 
lName = lname.getText(); 

, но они, кажется, не соответствует тому, что я пытаюсь кода и я не могу идти вокруг него либо сог им просто новичок.

  1. Как распечатать все входные данные после всего цикла. Например, когда пользователь вводит «4» в «Enter number of students», будет напечатана 4 студенческая информация.

Вот мой первоначальный нерабочим код:

import java.io.*; 
public class Main { 
    public static void main(String[] args)throws IOException{ 
     BufferedReader datain = new BufferedReader (new InputStreamReader (System.in)); 

     String fName, lName, course, yrLevel, bDate; 
     int age; 
     int arr [] []; 
     int size; 

    System.out.print("Enter number of students: \n"); 
     size = Integer.parseInt(datain.readLine()); 
     arr = new int [size][]; 

     for(int a = 0; a < arr.length; a++){ 

     System.out.print("Enter first name: \n"); 
     fName = datain.readLine(); 
     /*insert code here to store fName to two dimensional array 
     like this one? arr [0] = new int [a]; */ 
     System.out.print("Enter last name: "); 
     lName = datain.readLine(); 
     System.out.print("Enter course: "); 
     course = datain.readLine(); 
     System.out.print("Enter year level: "); 
     yrLevel = datain.readLine(); 
     System.out.print("Enter age: ");  
     age = Integer.parseInt(datain.readLine()); 
    } 
     /* desired output be like: 
     Student 1 
     Name: Bat Man 
     Year Level: Graduate School 
     Birthdate: Feb. 20, 2012 
     Age: 7 

     Student 2 
     Name: Super Man 
     Year Level: Masteral 
     Birthdate: Jan. 1, 2012 
     Age: 8 
     */ 
     System.out.println("Name: " +arr[0][0] + " " + arr[0] [1]); //just me showing my non-working idea of printing them. 
    } 
} 
+2

Я не уверен, почему вы хотите использовать для этого 2d-массив? Почему бы не создать небольшой объект, в котором хранятся данные о студентах, а затем создать 1d-массив из них или даже создать объект ArrayList для объектов-учеников. –

+0

* «Я видел несколько примеров программ с синтаксисом вроде:' fName = fName.getText(); '" * Действительно, где вы это видели? Я не вижу, как это будет скомпилировано. –

+0

Отказавшись от того, что сказал @DavidSaxon, я не уверен, что вы можете выполнить то, что хотите, с 2D-массивом. Вам либо нужны несколько массивов (6 1D массивов). Или один одномерный массив объектов «Студент». Основываясь на вопросе, это звучит так, будто объекты не могут быть и речи. Если вы ДЕЙСТВИТЕЛЬНО захотите использовать многомерный массив, вы можете сохранить индекс каждой записи в первом измерении и каждое значение в первых 6-секундных измерениях. – supersam654

ответ

0

Вместо того чтобы использовать многомерный массив, вы должны создать небольшой объект, который хранит детали студента. Например:

public class Student { 

    public String name; 
    public String yearLevel; 
    //etc... 

    //constructor 
    public Student(String name, String yearLevel, etc...) { 
     this.name = name; 
     this.yearLevel = yearLevel; 
     //etc... 
    } 
} 

Затем получите данные с пользовательского ввода и постройте учащегося, используя его. А студенты могут быть сохранены в массиве:

Student[] students = new Student[numberOfStudents]; 

Или еще лучше вы можете хранить студент в списке массива, то вам не нужно знать, требуется количество студентов:

ArrayList<Student> students = new ArrayList<Student>(); 
+0

Суть проблемы была в самом деле о двухмерных массивах. например: если входной сигнал равен 4, тогда он будет создавать массив из: A [0] [0] A [0] [1] A [0] [2] A [0] [3] A [0] [4] А [1] [0] А [1] [1] А [1] [2] А [1] [3] А [1] [4] А [2 ] [0] A [2] [1] ... и пр. До A [4] [4] для ученика1: fName будет сохранено в A [0] [0] lName будет сохранено в A [0] [1] после завершения 1-го цикла он запрашивает у студента 2, затем fName будет сохранен в A [1] [0] lName будет сохранено в A [1] [1] .. – RedJohn

 Смежные вопросы

  • Нет связанных вопросов^_^