Добрый день.
Задача не проходит послений пункт, выдает "Убедись, что вывод соответствует заданию".
Тестовое задание программа проходит
Поигрался с кодировками, но кажется, дело не в этом.
Подскажите. в чем может причина.
public class Solution {
public static void main(String[] args) throws IOException, FileNotFoundException{
FileReader fr = null;
if (args[0].length() != 0){
fr = new FileReader(args[0]);
}
int count = 0;
int kol = 0;//количество символов в файле
char[] buf = new char[500];
while (fr.ready()) {
kol = fr.read(buf);
}
for(int i = 0; i < kol; i++){
if (buf[i] == 10) count++;
}
count = count + 1;//количество строк в файле
fr.close();
String[] str = new String[count];//исходный массив имен
String[] work = new String[count];//масси для сохранения исходного массива имен перед сортировкой
String[] d = new String[count];//исходный масси зарплат
String[] d_work = new String[count];//массив зарплат после сортировки массива имен
for(int i = 0; i < count; i++){
str[i] = "";
d[i] = "";
}
int k = 0;
//заполняем массив имен и массив зарплат
for(int i=0; i < kol; i++) {
if (buf[i] != 0) {
if (buf[i] != 32) {
str[k] = str[k] + buf[i];
} else {
for (int y = i + 1; y < (kol+1); y++) {
if (buf[y] == 13 || buf[y] == 0) {//если лостигнут конец строки или конец файла
i = y + 1;
break;
}
d[k] = d[k] + buf[y];
}
k++;//увеличиваем счетчик количества строк
}
}
}
//делаем копию массива зарплат
for(int i = 0; i < count; i++){
work[i] = str[i];
}
//суммируем зарплаты
for(int i = 0; i < count; i++){
for(int j = i+1; j < count; j++){
if (str[i].equals(str[j]) && str[i] != "" && str[j] != ""){
str[j] = "";
work[j] = "";
d[i] = String.valueOf(Double.parseDouble(d[i]) + Double.parseDouble(d[j]));
d[j] = "";
}
}
}
//сортировка
Arrays.sort(str);
//приведение массива зарплат в соответствие с именами после сортировки
for(int i = 0; i < count; i++){
for(int j = 0; j < count; j++) {
if (work[i].equals(str[j]) && work[i] != "" && str[j] != "") {
d_work[j] = d[i];
}
}
}
//вывод
for(int i = 0; i < count; i++){
if (str[i] != "")
System.out.println(str[i] + " " + Math.rint(100.0*Double.parseDouble(d_work[i]))/100.0);
}
}
}
package com.javarush.task.task19.task1919;
/*
Считаем зарплаты
*/
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
public class Solution {
public static void main(String[] args) throws IOException, FileNotFoundException{
FileReader fr = null;
if (args[0].length() != 0){
fr = new FileReader(args[0]);
}
int count = 0;
int kol = 0;//количество символов в файле
char[] buf = new char[500];
while (fr.ready()) {
kol = fr.read(buf);
}
for(int i = 0; i < kol; i++){
if (buf[i] == 10) count++;
}
count = count + 1;//количество строк в файле
fr.close();
String[] str = new String[count];//исходный массив имен
String[] work = new String[count];//масси для сохранения исходного массива имен перед сортировкой
String[] d = new String[count];//исходный масси зарплат
String[] d_work = new String[count];//массив зарплат после сортировки массива имен
for(int i = 0; i < count; i++){
str[i] = "";
d[i] = "";
}
int k = 0;
//заполняем массив имен и массив зарплат
for(int i=0; i < kol; i++) {
if (buf[i] != 0) {
if (buf[i] != 32) {
str[k] = str[k] + buf[i];
} else {
for (int y = i + 1; y < (kol+1); y++) {
if (buf[y] == 13 || buf[y] == 0) {//если лостигнут конец строки или конец файла
i = y + 1;
break;
}
d[k] = d[k] + buf[y];
}
k++;//увеличиваем счетчик количества строк
}
}
}
//делаем копию массива зарплат
for(int i = 0; i < count; i++){
work[i] = str[i];
}
//суммируем зарплаты
for(int i = 0; i < count; i++){
for(int j = i+1; j < count; j++){
if (str[i].equals(str[j]) && str[i] != "" && str[j] != ""){
str[j] = "";
work[j] = "";
d[i] = String.valueOf(Double.parseDouble(d[i]) + Double.parseDouble(d[j]));
d[j] = "";
}
}
}
//сортировка
Arrays.sort(str);
//приведение массива зарплат в соответствие с именами после сортировки
for(int i = 0; i < count; i++){
for(int j = 0; j < count; j++) {
if (work[i].equals(str[j]) && work[i] != "" && str[j] != "") {
d_work[j] = d[i];
}
}
}
//вывод
for(int i = 0; i < count; i++){
if (str[i] != "")
//System.out.println(str[i] + " " + Math.rint(100.0*Double.parseDouble(d_work[i]))/100.0);
System.out.println(str[i] + " " + Double.parseDouble(d_work[i]));
}
}
}