2013-12-18 98 views
0

在我的代码中,当我输入一个单词时,我得到一个没有这样的元素异常。它确实输出了这个词和hang子手,但是这样做后也会崩溃。这是什么原因造成的?我该如何解决? 以下是错误的开始:什么原因导致没有这样的元素异常

Exception in thread "AWT-EventQueue-1" java.util.NoSuchElementException: No line found 
    at java.util.Scanner.nextLine(Unknown Source) 
    at Hangman.paint(Hangman.java:50) 
    at javax.swing.RepaintManager$3.run(Unknown Source) 
    at javax.swing.RepaintManager$3.run(Unknown Source) 

而且这将是很难改变我的代码,以便每次计算机猜测它绘制的刽子手,而不是它的所有出现在执行计划的一个组成部分时间?

import java.util.Scanner; 
import javax.swing.JApplet; 
import java.awt.*; 

public class Hangman extends JApplet 
{ 
    public void paint (Graphics Page) 
    { 
       //gallows 
       Page.drawLine(0,300,20,300); 
       Page.drawLine(10,40,10,300); 
       Page.drawLine(10,40,80,40); 
       Page.drawLine(80,40,80,55); 

       //torso 
       Page.drawOval(50,55,50,55); 
       Page.drawOval(50,100,50,100); 
       //left arm and hand 
       Page.drawLine(50,150,40,110); 
       Page.drawLine(40,110, 45,100); 
       Page.drawLine(40,110, 25,100); 
       Page.drawLine(40,110, 25,115); 


       //right arm and hand 
       Page.drawLine(100,150,120,110); 
       Page.drawLine(120,110, 115,95); 
       Page.drawLine(120,110, 125,95); 
       Page.drawLine(120,110, 135,115); 

       //left leg and foot 
       Page.drawLine(80,200,100,250); 
       Page.drawLine(100,250, 115,260); 


       //right leg and foot 
       Page.drawLine(75,200,60,250); 
       Page.drawLine(60,250,45,260); 




    Scanner in = new Scanner(System.in); 
    System.out.println("Enter a 4 or 5 letter word and the computer will play hangman against you!"); 
    String word = in.nextLine(); 


    char[] letter = word.toCharArray(); 


    for (int i = 0; i < letter.length; i++) { 
      letter[i] = 'a'; 
    } 


    for (int i = 0; i < word.length(); i++){ 
     for (int j = 48; j < 122; j++) { 

        if (letter[i] == word.charAt(i)) { 
          break; 
        } else { 
          letter[i] = (char)((int) j + 1); 
        } 
      } 
    } 
    System.out.println("Your word is: "); 

    for (char letters : letter) { 
      System.out.print(letters); 
    } 
    in.close(); 
} 

} 
+3

请您分享实际的异常消息吗?通常它会有一个可以提供线索的行号 – fdsa

+0

这很长,但是这里是它的开始: 线程“AWT-EventQueue-1”中的异常java.util.NoSuchElementException:未找到行 \t at java.util。 Scanner.nextLine(来源不明) \t在Hangman.paint(Hangman.java:50) \t在javax.swing.RepaintManager中的$ 3.run(来源不明) \t在javax.swing.RepaintManager中的$ 3.run(来源不明) – user3112609

回答

1

接近in里面你paint方法。它关闭底层流,下一次尝试从中读取会产生错误。

关闭ScannerSystem.in关联的对象几乎不是一个好主意。

the docs:“当扫描仪关闭时,如果源实现可关闭接口,它将关闭其输入源。”

+0

真的吗?好,谢谢!自从我开始以来,我一直都在关闭它!感谢您的反馈! – user3112609

+0

它现在运行,但是当我输入一个单词时,它会输出两次? 输入一个4或5个字母的单词,电脑就会对你发起hang子手! hi 你的话是: hi输入一个4或5个字母的单词,计算机将发挥你的hang子手! – user3112609

+0

'paint'方法被多次调用。把所有需要发生的事情都放在init()方法中。你需要学习一些'Applet' /'JApplet'的基础知识。你可能想从这里开始:http://docs.oracle.com/javase/tutorial/deployment/applet/getStarted.html –

相关问题