我是Java初学者
我想做一个简单的角色类。 Character对象有两个参数:String name和ArrayList speechSet
请告诉我为什么我的第一个Java代码不能工作
我想使用Scanner(system.in)从控制台获取speechSet的名称和元素。 所以首先我在Python3中写道:
class Character:
name = str()
speechSet = list()
characterList = list()
def __init__(self):
self.name = input("Name? : ")
temp = input("Speeches? : ")
self.speechSet = [i for i in temp.split(" ")]
Character.characterList.append(self)
def main():
j = Character()
for item in Character.characterList:
print(item.name)
for speech in item.speechSet:
print(speech)
if __name__ == '__main__':
main()
当我运行这个,它的工作。 Console Success
我把它改成了Java
import java.util.ArrayList;
import java.util.Scanner;
public class Character
{
String name;
ArrayList<String> speechSet = new ArrayList<String>();
public static ArrayList<Object> characterList = new ArrayList<Object>();
public Character()
{
//Type name
Scanner nameScan = new Scanner(System.in);
System.out.println("Name? : ");
this.name = nameScan.next();
nameScan.close();
//Type Dialogue
Scanner setScan = new Scanner(System.in);
while (true)
{
System.out.println("speechs? : ");
String str = setScan.nextLine();
String[] words = str.split(" ");
for (int i = 0 ; i < words.length ; i++)
{
this.speechSet.add(words[i]);
}
break;
}
setScan.close();
}
public static void main(String[] args)
{
Character J = new Character();
System.out.println(J.name);
for (String speech : J.speechSet)
{
System.out.println(speech);
}
}
}
它返回一个错误
Name? :
j_NAME
speechs? :
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at Char_Touch.Character.<init>(Character.java:29)
at Char_Touch.Character.main(Character.java:45)
我改变了一个构造器如下:
public class Character
{
public Character()
{
this.name = "J_NAME";
//Type Dialogue
Scanner setScan = new Scanner(System.in);
while (true)
{
System.out.println("speechs? : ");
String str = setScan.nextLine();
String[] words = str.split(" ");
for (int i = 0 ; i < words.length ; i++)
{
this.speechSet.add(words[i]);
}
break;
}
setScan.close();
}
...
}
而且成功了
speechs? :
Hello Python I am Java
J_NAME
Hello
Python
I
am
Java
我已经解决了
我被告知“system.in已被Scanner.close()关闭,不会再打开。”
相关问题 更多 >
编程相关推荐