Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2017, 09:11   #1
Ilkas227
Новичок
Джуниор
 
Регистрация: 25.08.2017
Сообщений: 3
Вопрос В чем ошибка?

Только начал изучение java, нашел задание, чтобы потренироваться, не могу найти ошибку(

Screenshot_1.png
Вложения
Тип файла: txt d.txt (208 байт, 138 просмотров)

Последний раз редактировалось Ilkas227; 25.08.2017 в 09:14.
Ilkas227 вне форума Ответить с цитированием
Старый 25.08.2017, 09:14   #2
Ilkas227
Новичок
Джуниор
 
Регистрация: 25.08.2017
Сообщений: 3
Смущение

d.txt
перепутал документ
Ilkas227 вне форума Ответить с цитированием
Старый 25.08.2017, 09:39   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вы считываете не символы
Вы в цикле пересоздаете сканер
Вы изначально забили строку чем-то
Вы не считаете пробелы
p51x на форуме Ответить с цитированием
Старый 25.08.2017, 10:21   #4
Ilkas227
Новичок
Джуниор
 
Регистрация: 25.08.2017
Сообщений: 3
По умолчанию

а как мне войти в цикл не забивая строку?
Ilkas227 вне форума Ответить с цитированием
Старый 25.08.2017, 11:16   #5
NikiToZz_
Пользователь
 
Регистрация: 23.04.2016
Сообщений: 75
По умолчанию

Код:
import java.io.IOException;
import java.util.LinkedList;

public class characters {

    public static void main(String[] args) throws IOException {
        java.io.BufferedReader buf = new java.io.BufferedReader( new java.io.InputStreamReader(System.in));
        String input = buf.readLine();
        LinkedList<Character> lList = new LinkedList<Character>();
        int count = 0;

        for (int i = 0; i < input.length(); i++) {
            if (input.charAt(i) == '.') {
                break;
            } else {
                if (input.charAt(i) == ' ') {
                    count++;
                } else {
                    lList.add(input.charAt(i));
                }
            }
        }
        for (Character character:lList) {
            System.out.print(character + " ");
        }
        System.out.println();
        System.out.println("Количество пробелов: " + count);
    }

}
Одна из возможных реализаций, если вы имели в виду, что считывание символов происходит из строки.
NikiToZz_ вне форума Ответить с цитированием
Старый 25.08.2017, 13:22   #6
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Код:
    public static void main(String[] args){
        int probel = 0;
        String a = "";
        Scanner y = new Scanner(System.in);
        while (a.equals(".") != true) {
            a = y.nextLine();
            if (a.equals(" ")) probel++;
        }
        System.out.println("Пробелов: " + probel);
    }
Iron Monk вне форума Ответить с цитированием
Старый 27.08.2017, 14:43   #7
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

NikiToZz_ решение конечно очень оптимальное )). Название классов с большой буквы.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 30.08.2017, 21:10   #8
NikiToZz_
Пользователь
 
Регистрация: 23.04.2016
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Bugrimov Посмотреть сообщение
NikiToZz_ решение конечно очень оптимальное )). Название классов с большой буквы.
Я переписал JVM под себя ;-)
NikiToZz_ вне форума Ответить с цитированием
Старый 23.10.2017, 15:19   #9
Google0_0
Пользователь
 
Регистрация: 05.08.2012
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Iron Monk Посмотреть сообщение
Код:
    public static void main(String[] args){
        int probel = 0;
        String a = "";
        Scanner y = new Scanner(System.in);
        while (a.equals(".") != true) {
            a = y.nextLine();
            if (a.equals(" ")) probel++;
        }
        System.out.println("Пробелов: " + probel);
    }
В данном случае для завершения программы нужно в отдельной строке ввести точку. Кроме того подсчёт пробелов некорректен, так как будут считаться только строки состоящие из пробелов (пробелы между словами будут игнорироваться).

Можно предложить такой вариант решения задчи:
Код:
import java.util.Scanner;

public class Main{
	public static void main(String[] args){
		Scanner sr = new Scanner(System.in);
		String str = "";
		boolean flag = true;
		int spaceCount = 0;
		while (flag){
			str = sr.nextLine();
			for(char c : str.toCharArray()){
				if (c == ' ') spaceCount++;
				if (c == '.'){
					flag = false;
					break;
				}
			}
		}	
		System.out.println("Number of spaces: " + spaceCount);
	}
}
Google0_0 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО] Помогите в чем может быть ошибка? Ошибка ';' expected but 'BEGIN' found АлександрDelphi Общие вопросы Delphi 7 06.03.2016 19:25
В чем ошибка? Dima36668 Microsoft Office Excel 3 19.02.2013 15:00
в чем ошибка? mike273 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 04.10.2012 18:33
в чем ошибка??? Maksim_14 PHP 7 04.05.2011 15:28
в чем ошибка??? Сергей58rus Помощь студентам 3 26.04.2011 19:43