2016-02-20 3 views
1

Эта программа должна принимать пользовательский номер, создавать массив такого размера и вводить элементы, которые являются оценками, - используя цикл do..while. Затем программе необходимо отобразить все оценки, введенные от самого низкого до самого высокого, скопировать оценки и найти среднее значение.java loop array using do ... while

Мой вывод не отображает введенные оценки правильно (если я вхожу 10,20,30, он отображает 00,10,20), и я не могу понять, что я делаю неправильно. Любая помощь, пожалуйста?

import java.util.Arrays; 
import java.util.Scanner; 

public class LoopArray 
{ 
    public static void main(String[] arg) 
    { 
     Scanner keyboard = new Scanner(System.in); 

     int count = 0; 
     double totalAverage = 0; 
     double gradesTotal = 0; 

     System.out.println("Please input the number of grades you would like to submit for an average: "); 
     int numberOfGrades = keyboard.nextInt();     

     int[] studentScores = new int[numberOfGrades]; 

     do 
     { 
      System.out.println("Please enter grade for averaging: "); 
      int inputGrade = keyboard.nextInt(); 
      count++; 
      gradesTotal += inputGrade; 

     } while (count < numberOfGrades); 

     Arrays.sort(studentScores); 

     for(count=0; count < studentScores.length; count++) 
     { 
      System.out.println("Grades entered were: " + count + studentScores[count]); 
     } 

     totalAverage = gradesTotal/numberOfGrades; 
     System.out.println("The total of all grades entered is: " + gradesTotal); 
     System.out.println("The average of grades entered is: " + totalAverage); 

    } 
} 

ответ

0

Вы не помещаете какое-либо значение внутри массива. Вы должны добавить к вашей сделать частью цикла studentScores[count] = inputGrade; Теперь ваш do while цикл должен выглядеть следующим образом:

do 
    { 
     System.out.println("Please enter grade for averaging: "); 
     int inputGrade = keyboard.nextInt(); 
     studentScores[count] = inputGrade; 
     count++; 
     gradesTotal += inputGrade; 

    } while (count < numberOfGrades); 

Кроме того, внутри вашего последнего for-loop, вы печатаете дополнительной информации. Просто удалите этот счет из System.out.println

System.out.println("Grades entered were: " + studentScores[count]); 

Все, что вы не понимаете, дайте мне знать, спасибо

+0

Это было его! Спасибо! Я очень расстраивался. Я ценю это! – Jerstern

0

Потому что count начать с 0. Вы должны его проверить.

1

Result

Grades entered were: 00 
Grades entered were: 10 
Grades entered were: 20 

генерируется с

System.out.println("Grades entered were: " + count + studentScores[count]); 

Так последнее число в каждой строка представляет собой пару, представляющую count + studentScores[count]. Это означает, что:

  • 00 -> в позиции 0 массива studentScores магазины 0.
  • 10 -> в позиции 1 массива studentScores магазинов 0
  • 20 -> в позиции 2 массива studentScores хранит 0

Что означает, что вы не заполнили свой studentScores массив со значениями от пользователя.

0

вы забыли заполнить массив, используя GARDES вошел

do 
    { 
     System.out.println("Please enter grade for averaging: "); 
     int inputGrade = keyboard.nextInt(); 
     studentScores[count]=inputGrade; 
     count++; 
     gradesTotal += inputGrade; 

    } while (count < numberOfGrades); 
+0

Это не позволяет мне продвигать вас или @FarazDurrani, но спасибо большое! – Jerstern

+0

@Jerstern Вам нужна 15 репутация, чтобы получить [привилегии для голосования] (http://stackoverflow.com/help/privileges/vote-up). В любом случае, вы можете передать свои голоса позже, когда получите эту репутацию (это не так сложно получить, так как каждый день здесь задаются тысячи новых вопросов :) – Pshemo

+0

@FarazDurrani Еще один вопрос о мета: [разумно ли указывать комментарий с просьбой о повышении?] (http://meta.stackoverflow.com/q/314258/1393766). – Pshemo