Turn-in directory ex03
Files to turn-in Program.java
Allowed
Input/Output System.out, System.err, Scanner(System.in)
Types Primitive types, String
Operators Standard operations of primitive types, conditions, loops
Methods String::equals
When developing corporate systems, you often need to collect different kinds of statistics. And the customer always wants such analytics to be
illustrative. Who needs cold, dry figures?
Educational organizations and online schools often belong to this type of customers. Now, you need to implement functionality to visualize
students' progress. Customer wants to see a chart showing student's progress changes over several weeks.
Customer evaluates this progress as a minimal grade for five tests within each week. Each test can be graded between 1 and 9.
The maximum number of weeks for the analysis is 18. Once the program has obtained information for each week, it displays the graph on the
console to show minimum grades for a specific week.
And we keep assuming that 42 is the input data limit.
The exact guaranteed number of tests in a week is 5.
However, the order of weekly data input is not guaranteed, so Week 1's data can be entered after Week 2's data. If data input order is wrong,
IllegalArgument message shall be displayed, and the program shall be shut down with -1 code.
Note:
1. There are many options for storing information, and arrays are just one of them. Apply another method for storing data about student tests
without the use of arrays.
2. String concatenation often results in unexpected program behavior. If there are many iterations of a concatenation operation in a cycle for a
single variable, an application may slow down significantly. That is why we should not use string concatenation inside a loop to generate a
result.
Example of program operation:
$ java Program
-> Week 1
-> 4 5 2 4 2
-> Week 2
-> 7 7 7 7 6
-> Week 3
-> 4 3 4 9 8
-> Week 4
-> 9 9 4 6 7
-> 42
Week 1 ==>
Week 2 ======>
Week 3 ===>
Week 4 ====>
package ex03;
import java.util.Scanner;
public class Program {
static String weekWord = "Week";
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int numbersOfWeeks = 1;
String inputWeekWord;
int grade;
String checkString;
while (numbersOfWeeks <= 18) {
inputWeekWord = scanner.next();
if (inputWeekWord.equals("42")) {
System.exit(0);
} else if (!inputWeekWord.equals(weekWord) || scanner.nextInt() != numbersOfWeeks || !scanner.nextLine().equals("")) {
System.out.println("IllegalArgument");
System.err.println(-1);
}
int minGrade = 9;
for (int i = 1; i <= 5; i++) {
grade = scanner.nextInt();
if (grade < 1 || grade > 9) {
System.out.println("IllegalArgument");
System.err.println(-2);
}
if (grade < minGrade) {
minGrade = grade;
}
}
// тут не понимаю что делать???
numbersOfWeeks++;
}
}
}
Laziz Karimov
1 уровень
Как вывести minGrade? Week 1 ==> Week 2 ======> Week 3 ===> Week 4 ====> массив запрещено использовать
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Денис Enterprise Java Developer
4 марта 2023, 22:08
Как ты определяешь номер недели которая вводится сейчас?
Где завершение приложения с exit code -1 при неверном порядке ввода недель?
Где ты хранишь оценки?
Где поиск минимальной оценки?
Что такое System.err.println(-2)?
Ну.... и где отрисовка графика собственно?) Или на 27 уровне люди уже не в курсе как принтить в консоль простенькие паттерны?
Что-то мне подсказывает, что тебе стоит перечитать внимательно условия задачи.
0
Laziz KarimovBackend Developer в СберБанк
5 марта 2023, 06:59
Наверное с моей стороны некорректно был сформулирован вопрос за что прошу прошения.
Как ты определяешь номер недели которая вводится сейчас?
Ответ: int numbersOfWeeks = 1; и в цикле идет итерация numbersOfWeeks++;
Где завершение приложения с exit code -1 при неверном порядке ввода недель?
Ответ: этот кусочек я допишу
Где ты хранишь оценки?
Ответ: собственно вопрос заключался в том как хранить оценки т к по тз указывал что There are many options for storing information, and arrays are just one of them. Apply another method for storing data about student tests
without the use of arrays.
Где поиск минимальной оценки?
Ответ: if (grade < minGrade) {
minGrade = grade;
}
Что такое System.err.println(-2)?
Ответ: тут я хотел сказать что -2 это код ошибки, возможно не прав
Ну.... и где отрисовка графика собственно?)
Ответ: к отрисовке не мог приступить т к не понимал где хранить мин оценку за каждую неделю
0
Денис Enterprise Java Developer
5 марта 2023, 09:10полезный
и в цикле идет итерация numbersOfWeeks++;
А теперь сравни это с примером ввода из задачи.
том как хранить оценки
Судя по JR у тебя 27 уровень, ты уже должен быть знаком с концепцией объекта, а так же списков, сетов, карт и подобных структур данных. Можешь реализовать свою версию этих коллекций.
Ответ: if (grade < minGrade) {
Это не ответ, твой код должен ее искать обрабатывая хранилище оценок по неделям, а прямо на месте ввода.
тут я хотел сказать что -2 это код ошибки
И что он должен значить? google -> exit code
В целом тебе есть чем заниматься. Почитай про коллекции, здесь тебе скорее всего подойдёт список, я бы сказал ArrayList, думаю что в нём будет удобно хранить какую ни будь кастомную DTO, хранящую в себе инфу о номере неделе и список оценок. Альтернатива - заюзать Map, в которую класть по ключу (номер недели) список оценок.
Раздуплись с обработкой клиентского ввода, как его парсить, разбивать строку на оценки, определять номер недели и так далее. Здесь тебе помогут методы классов String и Integer.
Раздуплись с exit code'ами, и реализуй их там где этого требует условие. Не совсем понятно что делать при вводе 42, думаю здесь фраза вырвана из контекста и в какой-то из предыдущих задач это оговаривалось.
Ну и потом приступай к отрисовке. Здесь всё очевидно, берёшь своё хранилище, находишь минимальную оценку и отрисовываешь соответствующий паттерн типа прогресс-бара, только статичного.
+1