2016-04-04 4 views
0

Вот моя программа, которая хранит классы (элементы) в Gradebook (массив) enter image description hereИзменение значения выбранного элемента в массиве одномерного в программе JAVA

Я в основном пытаюсь разрешить пользователь быть в состоянии изменить любой класс (элемент), который они хотят в Gradebook (массив) столько раз, сколько они хотели бы (цикл в основном). Я дал пользователю возможность ввести индекс (который должен начинаться с 1, а не 0, чтобы избежать путаницы для пользователя), но после этого шага я застрял. Я не знаю, как искать элемент в массиве, а затем попросить пользователя, чтобы заменить его ...

Вот мой код до сих пор:

import java.lang.reflect.Array; 
import java.util.Scanner; 

public class NewGradeBook { 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 

     //Ask user to enter the amount of grades 
     int grades = NumberReader.readPositiveInt(input, "Please enter the number of grades: ", 
       "Error: Invalid data entered"); 

     int numOfGrades = grades; 

     double[] mogrades = new double[numOfGrades]; 

     for (int i = 0; i < mogrades.length; i++) { 

      //Allows user to enter each individual grade 
      System.out.println("Enter grade (limit to two decimal places)" + (i + 1) + ": "); 

      //Stores grades in array 
      mogrades[i] = NumberReader.readPositiveDouble(input, "Enter grade " + (i+1) + " :", "Invalid data entered"); 

     } 

     System.out.println("The Grade book contains: "); 

     printArray(mogrades); 

     System.out.println("___________________________"); 

     //Ask user if what grade they would like to change 
     int index = NumberReader.readPositiveInt(input, 
       "Enter the index of the grade to be changed: (1 to " + grades + ") : ", "Invalid index input"); 

    } 

    public static void printArray(double[] mogrades) { 

     for (int i = 0; i < mogrades.length; i++) { 

      System.out.print("Grade " + (i + 1) + " is: " + mogrades[i] + ", "); 

     } 

    } 

} 

Любая помощь будет оценена.

+0

Ugh. Нужно ли объяснять всю вашу программу? Конечно, вы застряли на определенной вещи и можете сузить ее до этого. – Gendarme

+0

Хммм, я думаю, я должен подождать немного дольше и, возможно, удалить этот вопрос и попытаться переставить, не вдаваясь в подробности. – Coco

+1

Редактирование прекрасно. Возможно, это будет приостановлено, и у вас будет возможность редактировать его до того, как он будет закрыт. Я бы не предлагал удалять и переписывать. – Gendarme

ответ

0

Структура должна быть похожа на это:

System.out.println("___________________________"); 

System.out.println("Make changes? Enter Y or N"); 
String makeChanges = System.console().readLine(); 
while (makeChanges.equals("Y")) { 
    //Ask user if what grade they would like to change 
    int index = NumberReader.readPositiveInt(input, 
    "Enter the index of the grade to be changed: (1 to " + grades + ") : ", "Invalid index input"); 

    System.out.println("Enter grade (limit to two decimal places)" + index + ": "); 
    //offset the index by one 
    mogrades[index - 1] = NumberReader.readPositiveDouble(input, "Enter grade " + index + " :", "Invalid data entered"); 

    System.out.println("Make changes? Enter Y or N"); 
    makeChanges = System.console().readLine(); 
} 
} 

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

+0

Я попытался реализовать ваш код, но есть ошибка, связанная с переменной i в (i + 1), кажется, что она не объявлена? Idk следует попробовать его объявить? Я отдам его. – Coco

+0

отредактирован - должен быть отредактированный индекс – nhouser9

+0

Не уверен, что вы имеете в виду, но я закончил инициализацию i письменно int i; За пределами цикла for, который избавился от ошибок, но, к сожалению, после запуска программы, он просит «Внести изменения? Введите Y или N», но распечатайте сообщение об ошибке Исключение в теме «main» java.lang .NullPointerException \t at NewGradeBook.main (NewGradeBook.java:37) – Coco

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