С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437

Минимальное, макисальное и среднее значение

15.12.2012, 12:24. Показов 5917. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть таблица которая берет файл и делает из него таблицу, по заданию первое значение не берется так как это ИД, из остальных значения он высчитывает минимально, максимальное и среднее..
Есть файл из 133 строк, и надо посчитать на каждую строку все значения, но может быть такие что значения меньше 0 или больше 100, если такие значения есть то сразу программа переходит на другую строку, и может быть такое что в строке больше 100 цифр, в этом случае программа тоже сразу же переходит на следующую строку. У меня не получается сделать эти условия, он вместо того чтоб переходить на следующую строку высчитывает минимально и максимально, среднее ставит ноль и все.. как это исправить?
Сама функция которая считает мин, макс и среднее:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public void calculator(String fileName, String delimiter) {
        FileReader fr = null;
        BufferedReader buf = null;
        try {
            fr = new FileReader(fileName);
            buf = new BufferedReader(fr);
            String line;
            String[] arr = null;
            try {
                while((line = buf.readLine()) != null) {
                    arr = line.split(delimiter);
                    int N = arr.length;     
                    double sum = 0.0;       
                    double vid = 0.0;
                    String min = arr[1];    
                    String max = arr[1];
                    String ID = null;
                    for(int i=0; i<1; i++) {
                        ID = arr[i];        
                    }
                    for(int i=1; i<N; i++) {
                        if(N <= 100) {
                        sum += Double.parseDouble(arr[i]); 
                        if(Double.parseDouble(arr[i]) < Double.parseDouble(min))
                            min = arr[i];                  
                        if(Double.parseDouble(arr[i]) > Double.parseDouble(max))
                            max = arr[i];                
                        vid = sum/(N-1); 
                        } else {
                            i++;
                        }
                    }
                    
                    list.add(new String[]{ID,min,max,(vid+"")}); 
                }
                } catch (NumberFormatException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e1) {
            System.out.println("Specified file is not found");
        } finally{
            if(buf != null){
                try {
                    buf.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }


И вся программа, где происходит вывод в JTable:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package Table2;
 
import java.awt.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
 
public class FileToTable extends JFrame {
    FileToTable() {
        super();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(600,650);
        setLayout(new BorderLayout());
        
        FileToTableConnect conn = new FileToTableConnect();
        final FileToTableTable fTable = new FileToTableTable(conn.getList(), conn.getCount());
        JTable t = new JTable(fTable);
        t.setAutoCreateRowSorter(true);
        JScrollPane sP = new JScrollPane(t);
        add(sP, BorderLayout.CENTER);
    }
    public static void main(String[] args) {
        new FileToTable().setVisible(true);
    }
}
 
class FileToTableTable extends AbstractTableModel {
    private ArrayList<String[]> list;
    private int count;
    private String[] columnName = {"Studenta ID",
                                   "Minimala atzime",
                                   "Maksimala atzime",
                                   "Videja atzime"};
    FileToTableTable(ArrayList<String[]> list, int count) {
        this.list = list;
        this.count = count;
    }
    public int getColumnCount() {
        return count;
    }
    public int getRowCount() {
        return list.size();
    }
    public Object getValueAt(int row, int col) {
        return list.get(row)[col];
    }
    public String getColumnName(int col) {
        return columnName[col];
    }
    public void setValueAt(String[] s) {
        list.add(s);
    }
}
 
class FileToTableConnect {
    Scanner s = null;
    private ArrayList<String[]> list;
    private int count = 4; 
    FileToTableConnect() {
        list = new ArrayList<String[]>();
        calculator("x.txt",";"); 
    }
    public ArrayList<String[]> getList() {
        return list;
    }
    public int getCount() {
        return count;
    }
    public void calculator(String fileName, String delimiter) {
        FileReader fr = null;
        BufferedReader buf = null;
        try {
            fr = new FileReader(fileName);
            buf = new BufferedReader(fr);
            String line;
            String[] arr = null;
            try {
                while((line = buf.readLine()) != null) {
                    arr = line.split(delimiter);
                    int N = arr.length;     
                    double sum = 0.0;       
                    double vid = 0.0;
                    String min = arr[1];    
                    String max = arr[1];
                    String ID = null;
                    for(int i=0; i<1; i++) {
                        ID = arr[i];        
                    }
                    for(int i=1; i<N; i++) {
                        if(N <= 100) {
                        sum += Double.parseDouble(arr[i]); 
                        if(Double.parseDouble(arr[i]) < Double.parseDouble(min))
                            min = arr[i];                  
                        if(Double.parseDouble(arr[i]) > Double.parseDouble(max))
                            max = arr[i];                 
                        vid = sum/(N-1); 
                        } else {
                            i++;
                        }
                    }
                    
                    list.add(new String[]{ID,min,max,(vid+"")}); 
                }
                } catch (NumberFormatException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (FileNotFoundException e1) {
            System.out.println("Specified file is not found");
        } finally{
            if(buf != null){
                try {
                    buf.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.12.2012, 12:24
Ответы с готовыми решениями:

Рандомные числа: минимальное значение, максимальное значение, среднее арифметическое
Есть код : Random r = new Random(); int array = new int; int index = 0; ...

Вычислить среднее значение параметра, исключив из данных его максимальное и минимальное значение
Даны результаты проведения N экспериментов (порядковый номер эксперимента и полученное в нем численное значение некоторого параметра)....

Найти столбик, в котором среднее арифметическое значение из положительных элементов имеет минимальное значение
Никак не могу понять задачу, помогите написать программу, очень нужно ! В части матрицы, расположенной под вспомогательной диагональю,...

10
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
15.12.2012, 13:01
можете файл выложить?
1
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
15.12.2012, 13:16  [ТС]
не знаю как его добавить
0
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
15.12.2012, 13:20
расширенный режим -> управление вложениями
1
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
15.12.2012, 13:25  [ТС]
Ваш файл занимает 608.0 Кб байт, что превышает предел на форуме в 20.0 Кб для этого типа файла.

Из 133 строк вместилось только 4
Вложения
Тип файла: txt x.txt (19.2 Кб, 11 просмотров)
0
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
15.12.2012, 14:25
можно так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public void calculator(String fileName, String delimiter) {
        
        FileReader fr = null;
        BufferedReader buf = null;
        
        try {
            fr = new FileReader(fileName);
            buf = new BufferedReader(fr);
            //kuda budet zapisyvatj dannyje
            
            String line;
           
            try {
                while((line = buf.readLine()) != null) {
                    System.out.println("Размер строки " + line.split(";").length);
                    
                    if(line.split(delimiter).length<100){//если строка больше 100 - пропускаем
                        String[] arr = line.split(delimiter);
                        boolean flag = true;//флаг для контроля значений
                        int N = arr.length;
                        double sum = 0.0;
                        double vid = 0.0;
                        String  min = "0.0";
                        String  max = "0.0";
                        String ID = arr[0];             
                        
                        for(int i=1; i<N; i++) {
                            if (Double.parseDouble(arr[i]) < 0 || Double.parseDouble(arr[i]) > 100){ //если значение больше 100 или меньше 0, значение не вводится в list
                                System.out.println("Пропускаем строку");
                                flag=false;                             
                            }                           
                            //vychisliajem min, max i summu chisel
                            
                            sum += Double.parseDouble(arr[i]);
                            if(Double.parseDouble(arr[i]) < Double.parseDouble(min))
                                min = arr[i];
                            if(Double.parseDouble(arr[i]) > Double.parseDouble(max))
                                max = arr[i];
                            
                        }
                        //vuchisliajem srednee
                        if (flag){
                            vid = sum/N-1;
                    
                            //zipisyvajem v ArrayList
                            list.add(new String[]{ID,min+"",max+"",(vid+"")});
                            //poka vyvod, potom uberu
                            System.out.println("Minimala: " +min+ ", maksimala: " +max+ ", videja: " +vid);
                        }
                    }
                }
            } 
//остальные catch и finally
     
    }
1
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
15.12.2012, 14:47  [ТС]
Спасибо, но теперь минимум везде по 0.0
0
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
15.12.2012, 14:59
=) собственно логично, все что меньше нуля мы отрубили, а инициировали переменную min = "0.0", соответственно не чего меньше быть не может, инициируйте переменную min = "100.0"
или верните как было у вас min = arr[1];
1
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
15.12.2012, 15:09  [ТС]
Там всегда выскакивает такая проблема он 3 ставит выше 15, я думал это из-за того что ограничения не поставил, но теперь тоже самое выдает
http://funkyimg.com/u2/2791/29... re_JPG.jpg
0
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
15.12.2012, 15:29
сортировать числовые значения когда они представлены в виде текста не гуд
1
 Аватар для Doctor_
238 / 237 / 142
Регистрация: 03.02.2011
Сообщений: 1,437
15.12.2012, 15:44  [ТС]
А ну да, оставлю так тогда
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.12.2012, 15:44
Помогаю со студенческими работами здесь

Минимальное и среднее значение элементов массива
Честно говоря я совсем недавно начал изучать языки программирования,и у меня возник вопрос. Как в массиве ,заданный произвольно, найти...

Вывести минимальное, максимальное и среднее значение
Здравствуйте знатоки JavaScript! Помогите новичку. Не могу вывести среднее значение. Успешно выводится минимальное и максимальное. ...

Определите минимальное и максимальное значение, среднее арифметическое
Добрый вечер(день). Очень нужна помощь с процедурой (её и функцию просто не понимаю :( ) Есть готовый код решенной задачи и нужно её...

Массивы. Найти среднее, максимальное, минимальное значение
В массиве хранятся оценки студентов по информатике.Найти: - среднюю оценку - max и min оценку - процент 2,3,4 и 5 - количество...

Найти максимальное, минимальное и среднее значение из трех чисел
Даны числа: A, B, C. Что больше удвоенная разность наибольшего и наименьшего из них или удвоенное 'среднее' число.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru