Завершить ввод в массив перед печатью всех - PullRequest
0 голосов
/ 10 апреля 2011

Я пытаюсь сделать ввод в массив, пока он не заполнится, и после этого распечатать весь массив. Но я не могу заставить цикл работать до тех пор, пока массив не заполнится и после этого не распечатать все.

Вот мой код:

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    String[] course = new String [2]; //creating array
    int [] grade = new int [2];

    System.out.println("Input coursename and grade: ");

    for (int i = 0; i < course.length; i++){
            course[i] = input.next();
            grade [i] = input.nextInt();

    if (i == course.length)
        break;

    //System.out.println("\nHow do you want to order course and grade?");
    //System.out.print("   1 - Ascending?\n"
    //               + "   2 - Decending?\n");

    //System.out.println("Name and grade is " + course[i] + " " + grade[i]);
       System.out.println(Arrays.toString(course)+(grade));

    }

  }
}

Как заставить цикл работать, а затем перейти к оператору печати?

Ответы [ 4 ]

0 голосов
/ 10 апреля 2011

if (i == course.length) не требуется, потому что когда i == length, то для завершения цикла цикл работает, а for-loop-body не вызывается, поэтому удалите эту строку и поместите вместо нее цикл закрытия "}"

Далее идет печать вашего массива. Измените последнюю строку на:

System.out.println(Arrays.toString(course) + Arrays.toString((grade)));
0 голосов
/ 10 апреля 2011

После grade [i] = input.nextInt(); должно быть }.
И следующее if вообще не обязательно.

0 голосов
/ 10 апреля 2011

Кажется, что цикл сделал бы работу, если бы он был закрыт после двух операторов присваивания. Проверка впоследствии бесполезна и может быть удалена.

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        String[] course = new String[2]; // creating array
        int[] grade = new int[2];

        System.out.println("Input coursename and grade: ");

        for (int i = 0; i < course.length; i++) {
            course[i] = input.next();
            grade[i] = input.nextInt();
        }
        System.out.println(Arrays.toString(course) + (grade));

    }
0 голосов
/ 10 апреля 2011

переменная i в цикле никогда не может быть равна course.length, потому что цикл работает только до i < course.length.Таким образом, блок if в любом случае является избыточным.

Оператор печати должен быть ПОСЛЕ блока for, в противном случае вы будете печатать массив на каждой итерации.

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    String[] course = new String [2]; //creating array
    int [] grade = new int [2];

    System.out.println("Input coursename and grade: ");

    for (int i = 0; i < course.length; i++) {
        course[i] = input.next();
        grade [i] = input.nextInt();
    }

   System.out.println(Arrays.toString(course)+(grade));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...