사용자 입력을 읽은 다음 다시 읽는 간단한 프로그램 (코드 하단)이 있습니다. 내 문제에 대한 다른 해결책이 있을지도 모르겠지만, 미래 프로그램에서 유용하기 때문에 이와 같은 것을 사용하고 싶다. 스택 오버플로 문제가 발생했습니다. 나는 이미이 주제 읽기 : - What is a StackOverflowError? -연속 루프가 지속되는 동안 스택 오버플로를 피할 수있는 방법은 무엇입니까?
을 내가 최고 몇 가지 답변을 읽고,하지만 문제는이 프로그램의 목적이기 때문에이 연속 루프를 원하는 것입니다. 루핑을 유지할 수 있도록 내 "스택"을 지울 수있는 방법이 있는지 궁금합니다. 내가 한 번 끝내면 데이터를 보관할 필요가 없습니다. 도움이된다면.
난에서 라인 (15)을 변경하는 경우 그것은 잘 작동 :
for(int y=0;y<System.in.available();++y)
에 :
for(int y=0;y<10;++y)
하지만 '그게 읽을 수있는 문자의 양에 엄격한 제한을두고, 나는 돈하고 그걸 원해. 또한 가능한 경우 입력을 가져 오는 (char) System.in.read() 메서드를 계속 사용하는 것이 좋습니다.
내 프로그램은 다음과 같습니다
package main;
import java.io.IOException;
public class Root
{
public static void main(String[] args)
{
new Root();
}
public Root()
{
try{
for(int y=0;y<System.in.available();++y)
{
try
{
System.out.print((char)System.in.read());
}
catch (IOException exep)
{
System.out.print(exep.getLocalizedMessage());
}
}
}
catch(IOException exep)
{
System.out.println(exep.getLocalizedMessage());
}
new Root();
}
}
과 대신 정적 메서드합니다
이유에 루트 생성자를 변경할 수 없습니다. – Bernard
Java는 TCO를 지원하지 않으므로 Java의 모든 재귀 함수 호출은 한정된 깊이를가집니다. 명령형 루프 - 'while', 'for'등으로 전환하십시오. – user2864740
루프가 필요한 경우 루프를 사용하지 않는 이유는 무엇입니까? – user2357112