Javaコードを実行すると、いくつかのエラーが発生します。正常にコンパイルされますが、例外を除いてランタイムエラーが発生します。これはコードです:
import java.io.*;
class display {
private int charNumber;
private char[] currentArray;
public display() {
charNumber = 0;
}
public void dispText(String text, long speed, long wait) {
while(currentArray[charNumber] != '~') {
currentArray = text.toCharArray();
System.out.print(currentArray[charNumber]);
try {
Thread.sleep(speed);
} catch (NullPointerException e) {
System.out.println("Error in the Thread process:\n" + e);
} catch (InterruptedException e) {
System.out.println("Error in the Thread process:\n" + e);
}
charNumber++;
}
charNumber = 0;
try {
Thread.sleep(wait);
} catch (NullPointerException e) {
System.out.println("Error in the Thread process:\n" + e);
} catch (InterruptedException e) {
System.out.println("Error in the Thread process:\n" + e);
}
}
public void resetCharNumber() {
charNumber = 0;
}
}
class Main {
public static void main (String[] args) throws Exception {
//Make sure to include a '~' at the end of every String.
String start = "Hey, is this thing on?~";
String hello = "Hello, World!~";
display d = new display();
d.dispText(start, 200, 2000);
d.dispText(hello, 200, 2000);
System.out.println("\nDone!");
}
}
はvoid dispText
、テキストを表示するための文字列System.out.print
、文字が表示されるたびに経過する時間を決定するための長い速度(タイプライターのように)、および次のプロセスが実行されるまでに経過する時間を決定するための長い待機を取ります。dispText
文字列テキストを取得し、それをでchar配列に変換してから、text.toCharArray();
whileループに入り、実行ごとに1文字を表示し、速度で指定された時間待機してから、次の文字に移動します。これは、テキストに送られる文字列の最後の文字として含まれる最後の文字('〜')に到達するまで行われます。その後、次の行に移動します。次に、mainで、「d」という名前の表示クラスのインスタンスが作成され、dはdispTextを2回実行します。
これは、実行時に発生するランタイムエラーです。
ランタイムエラー:
Main.main(Main.java:48)のdisplay.dispText(Main.java:14)
でのスレッド"main"java.lang.NullPointerExceptionの例外