Я написал java-программу без пакета javax.mail. Чтобы подключиться к моей учетной записи Gmail, я использую socket. Чтобы получить мои сообщения, я использую цикл for.
for(int i=1; i<=NumOfMsg; i++){
output.println("RETR "+i);
do{
answer = response();
System.out.println(answer);
}
while (true);
ответ - метод, который выглядит так:
String response() throws IOException {
response = input.readLine();
if(response == null)
return null;
else
return answer;
}
Когда эта программа ведется, она возвращает только первую букву. После этого программа не будет повторять цикл. Курсор мигает, и я не могу понять, что он ждет другого входа, который висит. Если я оставлю программу на 5 минут, она начнет вечный цикл и печатает нуль.
Любые предложения помогут.
Ваша логика неверна. Вы назначаете ответ на первый результат из response(), а затем никогда не обновляете его, если только ответ не равен нулю.
Если вы хотите построить ответ из ответа, у вас должен быть цикл, который добавляет ответ на переменную ответа.
for(int i = 1; i <= NumOfMsg; ++i){
output.println("RETR " + i);
do {
answer = response();
System.out.println(answer);
}
while (true);
}
String response() throws IOException {
response = input.readLine();
return response == null ? answer : answer + response;
}