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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2011, 19:26   #1
Petros
 
Регистрация: 02.07.2010
Сообщений: 3
Восклицание Ошибка ввода

Задача:С клавиатуры вводится последовательность положительных целых чисел a1, a2, ..., an. Признак окончания ввода - число 0. Требуется составить сумму S из всех совершенных чисел этой последовательности.

Мое решение:

Код:
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;


public class Test {

	/**
	 * @param args
	 * @throws IOException 
	 * @throws NumberFormatException 
	 */
	public static void main(String[] args) throws NumberFormatException, IOException {
	
		
		int numb = 0;
		int j;
		int summ = 0;
		
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		numb = Integer.parseInt(in.readLine());
		int i = numb;
		while (numb != 0 )
		{
			for(j = 1; j < numb; j++)
			{
				if (numb % j == 0)
				{
					i -= j;
				}
			}
		if (i == 0)
		{
			summ += numb;
		}
			numb = Integer.parseInt(in.readLine());	
		}
		System.out.println(summ);
		}		
}
Почему в сумму входит только первое "совершенное" число?
Petros вне форума Ответить с цитированием
Старый 11.06.2011, 15:27   #2
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

Не понятно причем здесь "Ошибка ввода"!?
Цитата:
Сообщение от Petros Посмотреть сообщение
Почему в сумму входит только первое "совершенное" число?
По-моему не должно и первое входить так-как при любом значении numb при j == 1 i станет на 1 меньше...
Ты указал if (i == 0), если идти по этой логике то наверное правильнее будет if ((i + numb) == 0). И еще после этого блока нужно обнулять i.
Skype: CODERua
[CODER] вне форума Ответить с цитированием
Старый 21.06.2011, 00:53   #3
BRTSBOG
 
Регистрация: 19.11.2009
Сообщений: 5
По умолчанию Сложение

Попробуй использовать такую бяку -

Scanner scan = new Scanner(System.in);
scan.useDelimiter(";");
while(scan.hasNextInt()){
summ+=scan.nextInt();

}
System.out.print(summ);

Только разделитель useDelimiter поставь свой
BRTSBOG вне форума Ответить с цитированием
Старый 26.06.2011, 14:26   #4
Freddi Krjuger
Пользователь
 
Регистрация: 20.08.2010
Сообщений: 37
По умолчанию

Какое-то извращенное решение.
Freddi Krjuger вне форума Ответить с цитированием
Старый 26.06.2011, 16:25   #5
sashonk
Форумчанин
 
Регистрация: 26.10.2009
Сообщений: 170
По умолчанию

по-моему, нормальное решение
sashonk вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форматирование ввода в колонку dataGridView и проверка правильности ввода tumanovalex C# (си шарп) 1 31.05.2011 19:56
Ошибка ввода/вывода на картридере Terran Компьютерное железо 4 07.05.2011 00:51
Ошибка ввода записи. Паскаль Базиля Помощь студентам 10 10.01.2010 21:53
Как сделать запрет ввода букв в поле для ввода input zvezda_t PHP 1 27.12.2009 22:02