スレッドの実行に問題があります。ほら、私は純粋にテキストの一節をゆっくりと印刷するためのクラスを持ちたい、つまり各文字の間にxミリ秒待つ(ポケモンでのテキストの表示方法と考えてください!)。そのため、現時点では、Mainクラスと、静的な「Print」クラスがあります。Printクラスには、slowと呼ばれる静的メソッドがあります。文字列と各文字間の遅延を渡します。問題は、私のメインクラスで私が言うなら
Print.slow("Hello there, enter your name");
System.out.println("NAME:");
name = (scanner object).nextLine();
「こんにちは、名前を入力してください」を読んでいる間に、入力を入力できます。まだPrint.slow()メソッドをスリープ状態にする必要があるので、パッセージが読み取られるまでメインメソッドを一時停止するにはどうすればよいですか?
printSlowメソッド(Printクラスはメインのメソッドにリフラクタされました)
public static void printSlow(String passage, int delay)
{
int normDelay = delay;
char lastChar = 'a';
for(int i=0; i<passage.length(); i++)
{
try {
if(passage.charAt(i) == '.' && passage.charAt(i + 1) == '.') {
System.out.print(".");
try {
Thread.sleep(normDelay*10);
} catch (InterruptedException e) {
e.printStackTrace();
}
continue;
}
} catch (Exception e) {
System.out.print(".");
try {
Thread.sleep(normDelay*10);
}catch(InterruptedException e1) {
e1.printStackTrace();
}
continue;
}
if(passage.charAt(i) == ' ' && (lastChar == ',' || lastChar == '.' || lastChar == '!' || lastChar == '?'))
{
continue;
}else
{
System.out.print(passage.charAt(i));
}
if(passage.substring(i, i + 1).equals(".")
|| passage.substring(i, i + 1).equals(",")
|| passage.substring(i, i + 1).equals("!")
|| passage.substring(i, i + 1).equals("?"))
{
System.out.println();
delay = normDelay * 10;
}
try
{
Thread.sleep(delay);
delay = normDelay;
}
catch(InterruptedException e)
{
System.out.println(e);
}
lastChar = passage.charAt(i);
}
}
非常に複雑な理由は、終止符やカンマなどのたびに長い遅延が必要であり、3つの終止符が連続していても3行スキップされないためです。