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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2017, 12:59   #1
VilerIT
Новичок
Джуниор
 
Регистрация: 21.07.2017
Сообщений: 2
Вопрос Компилятор

Решил создать компилятор для HQ9+ (экзотерический язык программирования) на Java. Все работает нормально, кроме одной команды - Q. Когда я компилирую "HHHQ" должно выходить:
Hello world!
Hello world!
Hello world!
HHHQ
А выходит:
Hello world!

Hello world!
Hello world!

Hello world!
Hello world!
Hello world!

Hello world!
Hello world!
Hello world!
HHHQ

Исходник компилятора:
Код:
public class hq9pi {
	private String programmOutput = "";
	private int accumulator = 0;
	private void interpret(String code) {
		for(int i = 0; i < code.length(); i++) {
			if(code.charAt(i) == 'H') {
				programmOutput += "\nHello world!";
			} else if(code.charAt(i) == 'Q') {
				programmOutput += "\n" + code;
			} else if(code.charAt(i) == '9') {
				for(int nmb = 99; nmb > 0; nmb--) {
					if(nmb != 0) {
						String nmbmo = nmb - 1 == 0 ? "No more":"" + (nmb - 1);
						String btl = (nmb == 1) ? " bottle":" bottles";
						String nmbmotwo = nmb + "";
						programmOutput += "\n" + nmbmotwo + btl + " of beer on the wall\n" +
						nmb + btl + " of beer!\n" +
						"Take one down, pass it around\n" +
						nmbmo + " bottles of beer on the wall!";
					} else {
						break;
					}
				}
			} else if(code.charAt(i) == '+') {
				accumulator++;
			}
			System.out.println(programmOutput);
		}
	}
	public static void main(String[] args) {
		new hq9pi().interpret(args[0]);
	}
}
VilerIT вне форума Ответить с цитированием
Старый 21.07.2017, 13:22   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Код:
System.out.println(programmOutput);
за цикл надо выносить, это ж результат работы
p51x вне форума Ответить с цитированием
Старый 21.07.2017, 15:50   #3
VilerIT
Новичок
Джуниор
 
Регистрация: 21.07.2017
Сообщений: 2
Радость

Спасибо, не заметил такой простой вещи)
VilerIT вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компилятор Dario Общие вопросы C/C++ 1 03.04.2011 00:01
Компилятор С mutabor Общие вопросы C/C++ 7 23.05.2010 17:11
Компилятор C/C++ Lazy_Bitch Общие вопросы C/C++ 4 13.10.2009 15:45
Компилятор jamesscreen Фриланс 2 11.08.2009 16:03
Компилятор Лубышев Помощь студентам 7 15.10.2008 18:53