Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/55: Рейтинг темы: голосов - 55, средняя оценка - 4.85
 Аватар для jambas92
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315

чтение с пробелами String

28.11.2011, 23:44. Показов 10728. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Не давно только перешел с C++ на Java. Есть такая задача, может Вы ее уже встречали... Одним словом, нужно ввести n, а затем n видов пингвинов. Вывести вид пингвина который встречался самое небольшое. Простой тест:
Ввод:
7
Emperor Penguin
Macaroni Penguin
Little Penguin
Emperor Penguin
Macaroni Penguin
Macaroni Penguin
Little Penguin

Вывод:
Macaroni Penguin

для того что бы ее решить на С++, использовался функцию getline, а как на Java? Вот мой код:

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
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
 
public class Timus{
    
    public static void main(String[] args){
        
        Scanner in = new Scanner(System.in);
        
        int n;
        int c1 = 0;
        int c2 = 0;
        int c3 = 0;
        String pin[] = new String[100];
        
        n = in.nextInt();
        
        for (int i=0; i<n; i++)
        {
            pin[i] = in.nextLine();
        }
        
        Arrays.sort(pin);
        
        for (int i=0; i<n; i++)
        {
            if (pin[i]=="Emperor Penguin"){
                c1++;
            }
            else if (pin[i]=="Little Penguin"){
                c2++;
            }
            else if (pin[i]=="Macaroni Penguin"){
                c3++;
            }
        }
        
        if (c1 > c2 && c1>c3){
            
            System.out.println("Emperor Penguin");
        }
        else if (c2 > c1 && c2 > c3){
            
            System.out.println("Little Penguin");
        }
        else if (c2 > c1 && c2 > c3){
            
            System.out.println("Macaroni Penguin");
        }
 
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.11.2011, 23:44
Ответы с готовыми решениями:

чтение string с обратной сторони
static String str(String a){ char f=a.ToCharArray(); for(int i=f.length;i&gt;=0;i--){f=a.AtChar(i);} a=new String(f); return a; } ...

Чтение массива String и выбор нужного элемента
Ребят, всем привет. Нужна поомщь. Создал массив String с 50 элементами, в каждом элементе записана страна Европы и столица. Например:...

Чтение русского текста в String через консоль
Есть код public class JavaApplication1 { public static void main(String args) throws IOException { String str =...

9
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
29.11.2011, 11:15
1. А если n > 100?
2. А если я введу вид, неперечисленный в твоих if-ах.
3. , да?
1
 Аватар для jambas92
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
29.11.2011, 16:19  [ТС]
по условию задачи вводим только три вида пингвина, и нужно вывести тот вид пингвина который встречается больше всех

Добавлено через 16 минут
статья очень полезная, но решения своего вопроса я не вижу
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
29.11.2011, 17:43
Цитата Сообщение от jambas92 Посмотреть сообщение
по условию задачи вводим только три вида пингвина, и нужно вывести тот вид пингвина который встречается больше всех
Цитата Сообщение от aleksandy Посмотреть сообщение
1. А если n > 100?
Если ввести количество пингвинов равным или большим, чем 100, то на 101 пингвине ваша программа упадет с IndexOutOfBoundsException


Цитата Сообщение от aleksandy Посмотреть сообщение
3. ВНЕЗАПНО, да?
Цитата Сообщение от jambas92 Посмотреть сообщение
статья очень полезная, но решения своего вопроса я не вижу
Статья очень полезная, согласен, только вы ее невнимательно прочитали. Я могу вам гарантировать, что при правильном вводе у всех ваших пигвинов счетчики будут равны нулю, т.к. вы сравниваете не содержимое строк, а их ссылки. В статье об этом написано.


Цитата Сообщение от aleksandy Посмотреть сообщение
2. А если я введу вид, неперечисленный в твоих if-ах.
Вопрос остается открытым


Цитата Сообщение от jambas92 Посмотреть сообщение
для того что бы ее решить на С++, использовался функцию getline, а как на Java? Вот мой код:
Чем вас не устраивает то, как вы сейчас используете сканер? Чтобы понять о чем я говорю - посмотрите на результат работы этого кода
Java
1
System.out.println(new Scanner(System.in).nextLine());
при вводе нескольких слов и завершении ентером
2
 Аватар для jambas92
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
29.11.2011, 18:23  [ТС]
Сообщение от aleksandy
2. А если я введу вид, неперечисленный в твоих if-ах.
Вопрос остается открытым
нет не остается, так как я сказал вводим только три вида пингвина

Если ввести количество пингвинов равным или большим, чем 100, то на 101 пингвине ваша программа упадет с IndexOutOfBoundsException
до этой ошибки еще дожить надо... программа та нормально не компилируется. Как оказалось в моем коде есть две серьезных ошибок
1.
Java
1
2
3
4
5
6
7
8
else if (c2 > c1 && c2 > c3){
                        
                        System.out.println("Little Penguin");
                }
                else if (c2 > c1 && c2 > c3){
                        
                        System.out.println("Macaroni Penguin");
                }
а второй

Java
1
Arrays.sort(pin);
первую ошибку исправил, а вот вторую не знаю как
0
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
29.11.2011, 21:08
Держи примерный вариант. Реализация универсальная, то есть будет работать для любого количества типов и самих пингвинов.
Ради интереса по быстрому накидал. Не претендует на оптимальное решение никак, сделано коряво, но вроде работает, надо еще потестить.
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
import java.util.ArrayList;
import java.util.Hashtable;
import javax.swing.JOptionPane;
 
public class Main {
 
    private static ArrayList<String> pinguins = new ArrayList<String>();
    private static Object[] typesSet;
    private static Hashtable<String, Byte> pinguinsTypeQty = new Hashtable<String, Byte>();
 
    @SuppressWarnings("element-type-mismatch")
    public static void main(String[] args) {
        byte qty = Byte.valueOf(JOptionPane.showInputDialog("Сколько будет пингвинов?"));
        for (int i = 0; i < qty; i++) {
            pinguins.add(JOptionPane.showInputDialog("Введите пингвина №" + (i + 1)));
        }
        pinguinsTypeQty.put(pinguins.get(1), (byte) 0);
        for (String pinguin : pinguins) {
            typesSet = pinguinsTypeQty.keySet().toArray();
            boolean key = false;
            for (int i = 0; i < typesSet.length; i++) {
                if (pinguin.equals(typesSet[i].toString())) {
                    Byte qty2 = pinguinsTypeQty.get(pinguin);
                    pinguinsTypeQty.remove(pinguin);
                    pinguinsTypeQty.put(pinguin, ++qty2);
                    key = true;
                }
            }
            if (!key) {
                pinguinsTypeQty.put(pinguin, (byte) 1);
            }
        }
        typesSet = pinguinsTypeQty.keySet().toArray();
        String maxQtyType = "";
        Byte qty2 = 0;
        for (int i = 0; i < typesSet.length; i++) {
            if (pinguinsTypeQty.get(typesSet[i]) > qty2) {
                qty2 = pinguinsTypeQty.get(typesSet[i]);
                maxQtyType = typesSet[i].toString();
            }
        }
        System.out.println("Всего пингвинов: " + pinguins.size());
        System.out.println("разновидностей: " + pinguinsTypeQty.size());
        System.out.println("Чаще всего встречается разновидность: " + maxQtyType+". Встречается "+pinguinsTypeQty.get(maxQtyType)+" раз");
    }
}
1
 Аватар для jambas92
59 / 58 / 16
Регистрация: 18.11.2010
Сообщений: 315
29.11.2011, 21:24  [ТС]
_ViPeR, круто! Компонент Swing... Но я бы хотел просто узнать как решать на Java, что та болезненно обходиться мне этот процесс))

А вообще вод условие, взято с Тимуса

Программист Денис c детства мечтал побывать в Антарктиде, но почему-то регулярных рейсов туда нет. Поэтому Денис все лето изучал Антарктиду с помощью соседнего кинотеатра. Теперь он знает, что в Антарктиде водится несколько видов пингвинов:

Императорские пингвины (Emperor Penguins) — любители петь;
Малые пингвины (Little Penguins) — любители потанцевать;
Пингвины Макарони (Macaroni Penguins) — любители сёрфинга.

К сожалению, в мультфильмах не было сказано, какой вид пингвинов самый многочисленный. Денис решил выяснить это: он посмотрел эти мультфильмы еще раз, и каждый раз, когда видел пингвина, записывал в блокнот название его вида. Сейчас Денис дал вам блокнот с просьбой выяснить, какой вид пингвинов самый многочисленный.
Исходные данные
В первой строке записано целое число n — количество записей в блокноте (1 ≤ n ≤ 1000). В каждой из следующих n строк записано по одному виду пингвинов. Среди видов встречаются только «Emperor Penguin», «Little Penguin» и «Macaroni Penguin».
Результат
Выведите самый популярный вид пингвинов. Гарантируется, что такой вид только один.

исходные данные:
7
Emperor Penguin
Macaroni Penguin
Little Penguin
Emperor Penguin
Macaroni Penguin
Macaroni Penguin
Little Penguin

результат:
Macaroni Penguin
0
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
29.11.2011, 21:56
Сейчас Денис дал вам блокнот
Что подразумевается под блокнотом? Файл, массив строк, и т.д.? Ява не умеет читать с "блокнота"

Добавлено через 4 минуты
Вот например без диалоговых окон, с простым сканером с консоли:
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
import java.util.Hashtable;
import java.util.Scanner;
 
public class Main {
 
    private static Object[] typesSet;
    private static Hashtable<String, Byte> pinguinsTypeQty = new Hashtable<String, Byte>();
 
    @SuppressWarnings("element-type-mismatch")
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        Byte qty = s.nextByte();
        String pinguin = "";
        for (int i = 0; i < qty; i++) {
            pinguin = s.next();
            Byte value = pinguinsTypeQty.put(pinguin, (byte) 1);
            if (value != null) {
                pinguinsTypeQty.remove(pinguin);
                pinguinsTypeQty.put(pinguin, ++value);
            }
        }
        Byte qty2 = 0;
        String maxQtyType = "";
        typesSet = pinguinsTypeQty.keySet().toArray();
        for (int i = 0; i < typesSet.length; i++) {
            if (pinguinsTypeQty.get(typesSet[i]) > qty2) {
                qty2 = pinguinsTypeQty.get(typesSet[i]);
                maxQtyType = typesSet[i].toString();
            }
        }
        System.out.println("Всего пингвинов: " + qty);
        System.out.println("разновидностей: " + pinguinsTypeQty.size());
        System.out.println("Чаще всего встречается разновидность: " + maxQtyType + ". Встречается " + pinguinsTypeQty.get(maxQtyType) + " раз");
    }
}
P.S. Немного упростил алгоритм. Теперь проверка на наличие в таблице типов происходит сразу при добавлении. И не надо после перебирать заново ее, только ключ максимального значения найти.

Добавлено через 2 минуты
P.S.S. Тут еще нет обработки ситуации, когда в таблице одинаковое количество двух и более разновидностей
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
29.11.2011, 22:05
jambas92, вот ваш код с исправлением ошибок
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
import java.util.Arrays;
import java.util.Scanner;
 
public class Timus {
 
   public static void main(String[] args) {
      Scanner in = new Scanner(System.in);
      System.out.print("n = ");
      int n = in.nextInt();
      in.nextLine();
      int c1 = 0;
      int c2 = 0;
      int c3 = 0;
      String pin[] = new String[n];
 
      for (int i = 0; i < n; i++) {
         pin[i] = in.nextLine();
      }
 
      Arrays.sort(pin);
 
      for (int i = 0; i < n; i++) {
         if ("Emperor Penguin".equals(pin[i])) {
            c1++;
         } else if ("Little Penguin".equals(pin[i])) {
            c2++;
         } else if ("Macaroni Penguin".equals(pin[i])) {
            c3++;
         }
      }
 
      if (c1 >= c2 && c1 >= c3) {
         System.out.println("Emperor Penguin");
      }
      if (c2 >= c1 && c2 >= c3) {
         System.out.println("Little Penguin");
      }
      if (c2 >= c1 && c2 >= c3) {
         System.out.println("Macaroni Penguin");
      }
 
   }
}
1
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
30.11.2011, 01:50
а вот ещё вариантик ))

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
import java.util.HashMap;
import java.util.Scanner;
 
public class Timus {
 
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        HashMap<String, Integer> pings = new HashMap<String, Integer>();
        System.out.print("n = ");
        int n = in.nextInt();
        String line = null;
        Integer val = null;
        for (int i = 0; i < n; i++) {
            line = in.nextLine();
            if (pings.containsKey(line)) {
                val = pings.get(line);
                val++;
            } else {
                pings.put(line, 1);
            }
 
        }
        line = null;
        val = 0;
        for (String ping : pings.keySet()) {
            if (pings.get(ping) > val) {
                val = pings.get(ping);
                line = ping;
            }
        }
        System.out.println(line);
    }
}
и этому варианту плевать на количество и на разновидности, хоть попугаев считать )))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.11.2011, 01:50
Помогаю со студенческими работами здесь

Сравнение string с пробелами в С#
Как сравнить две строки типа string? Например, есть строка &quot;123456&quot; и строка &quot;123456 &quot;. Нужно сравнить их и чтобы функция которая эти...

Сохранение/чтение map<string,string*> в файл
Доброго времени суток, Нужно сделать БД для индексации содержимого текстовых файлов, сначала решил, что все просто: читаем файл и...

String, который не дружит с пробелами
Добрый день. Имеется несколько вопросов: во-первых, почему в примере адреса выводятся только по одному слешу, тогда как я указал два?...

Чтение строк с пробелами
Имеется файл такой структуры data.txt 2 10 4 11 3 6 2.5 5 нужно прочитать, и записать в двумерный массив данные. Числа...

Чтение строк с пробелами из БД.
Привет! У меня вопрос по чтению строки из поля БД Допустим я внесла в поле company строку 'ООО СМП Стройсервис'. Строка эта в базе...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru