Loading...
Dimov79 avatar Dimov79 6 Точки

ex 5 Students from ex. Objects and Classes

 

 

 

Здравейте, имам следният въпрос, трябва да разделя данните на първо име, второ име и оценка, но понеже оценката ми е тип Double не знам как да направя  split. Прилагам част от кода:

List <Students> infoStudents = new ArrayList();

for (int i = 0; i < n; i++) {
    
    String [] tokens = scanner.nextLine().split(".\\s+");
    
    String firstName = tokens [0];
    String secondName = tokens [1];
    double grade = Double.parseDouble(tokens [2]);

 

Това е пълния код. 

https://pastebin.com/WH4fbXqL

Благодаря предварително!

  1. Students

Write a program that receives n count of students and orders them by grade (in descending). Each student should have first name (string), last name (string) and grade (floating-point number).

Input

  • First line will be a number n

  • Next n lines you will get a student info in the format "{first name} {second name} {grade}"

Output

  • Print each student in the following format "{first name} {second name}: {grade}"

Example

Input

Output

4

Lakia Eason 3.90

Prince Messing 5.49

Akiko Segers 4.85

Rocco Erben 6.00

Rocco Erben: 6.00

Prince Messing: 5.49

Akiko Segers: 4.85

Lakia Eason: 3.90

Тагове:
0
Module: Java Advanced
mark79 avatar mark79 639 Точки

Здравей,

със сигурност имаш грешката в override-а. Оценката трябва да е форматирана до втория знак.

    @Override
    public String toString() {
        return this.firstName + " " + this.secondName + ":" + String.format(" %.2f", this.grade);

Поздрави :)

0
Dimov79 avatar Dimov79 6 Точки

Здравей,

благодаря за отговора, но ми дава следната грешка

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
    at Students.Main.main(Main.java:21)

от това, което виждам от дебъгера, ми запаметява в индекс 0 - първото и второто име, в индекс 1 - оценката. 

. Вероятно грешката идва от сплита, пробвам различни варианти, но не знам кой е правилния

0
mark79 avatar mark79 639 Точки

Здравей,

ако трябва да сплитваш по спейс, това ти е достатъчно .. и трябва да нямаш проблеми.

            String[] tokens = scanner.nextLine().split("\\s+");

Поздрави :)

0
Dimov79 avatar Dimov79 6 Точки

Здравей, 

пред да поискам помощ, пробвах най различни варианти на регекс включително и този, но резултата е същият

0
hm6566 avatar hm6566 52 Точки

Здрасти,

Сплитът е просто обикновен .split(" ");, но .split("\\s+"); също би трябвало да работи без проблем.

Няма нужда да вкарваш точката в regex-a. Взимаш си цялото число и после го parse-ваш към double.

Ето тук можеш да тестваш как работят различните regex-и и да се ориентираш по-лесно кое би ти свършило работа според случая.

1
31/10/2019 17:52:51
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.