0

みなさん、こんにちは。私はJavaの本から練習をしようとしています。私がする必要があるのは線を引くことです。テキストフィールド内で、線の間の距離をどれだけ離す必要があるかを言わなければなりません。これらはすべてループ内にある必要があるため、ハードコードされた行はありません。

私はそれが行われるべきだと思ったようにすべてを作りました、しかし私は私のコンソールでいくつかの奇妙なエラーを受け取ります。エラーコードは次のとおりです。

スレッド"AWT-EventQueue-0"の例外java.lang.NumberFormatException:入力文字列の場合: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)at java.lang.Integer.parseInt(Integer.java: 470)at java.lang.Integer.parseInt(Integer.java:499)at h03.LinePanel.paintComponent(LinePanel.java:30)at javax.swing.JComponent.paint(JComponent.java:1037)atjavax.swing。 JComponent._paintImmediately(JComponent.java:5106)at javax.swing.JComponent.paintImmediately(JComponent.java:4890)at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:812)at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager .java:714)at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:694)atjavax.swing.RepaintManager。access $ 700(RepaintManager.java:41)at javax.swing.RepaintManager $ ProcessingRunnable.run(RepaintManager.java:1672)at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)atjava.awt.EventQueue。 dispatchEventImpl(EventQueue.java:702)at java.awt.EventQueue.access $ 400(EventQueue.java:82)at java.awt.EventQueue $ 2.run(EventQueue.java:663)at java.awt.EventQueue $ 2.run( EventQueue.java:661)at java.security.AccessController.doPrivileged(Native Method)at java.security.AccessControlContext $ 1.doIntersectionPrivilege(AccessControlContext.java:87)at java.awt.EventQueue.dispatchEvent(EventQueue.java:672)at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)のjava.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)のjava。awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)at java.awt.EventDispatchThread.run (EventDispatchThread.java:122)

私はJavaを初めて使用するので、何を間違えたのか、このエラーのトラブルシューティング方法がわからないので、助けていただければ幸いです。これに使用するパネルのコードは

DrawLines lines = new DrawLines();

public void paintComponent(Graphics g) {

    super.paintComponent(g);
    int positionY = getHeight() - Integer.parseInt(afstand.getText()); // absolut positioning

    int yPos = 0;

    while(yPos <= positionY) {

        lines.drawLines(g, 0, yPos, getWidth(), yPos);
        yPos = yPos + Integer.parseInt(afstand.getText());
    }

}

public void actionPerformed(ActionEvent e) {

    try {

        repaint();


    }
    catch(NumberFormatException err) {

        JOptionPane.showMessageDialog(null, "something went wrong! heeft u wel    een waarde opgegeven?");

    }

}
4

2 に答える 2

2

問題はまさにそれが言っていることです:あなたInteger.parseInt()はあなたの例では空の文字列を呼び出します:afstand.getText()、そしてそれはそれを好きではありません。

java.lang.NumberFormatException: For input string: "" at
[...]
java.lang.Integer.parseInt(Integer.java:470) at java.lang.Integer.parseInt(Integer.java:499)

例外を回避するには、例外をキャッチできます。

try {
    int input = Integer.parseInt(afstand.getText());
    //rest of your code
} catch (NumberFormatException e) {
    //let the use know that the entry is invalid
}
于 2012-09-23T17:20:36.517 に答える
0

getText().toString() を使用して Textfield の値を取得します。System.out.println(afstand.getText) と toString を試して違いを確認できます。

そうしないと、Textfield に整数値がありません。

于 2012-09-23T17:25:21.000 に答える