사용자가 Dungeon 및 Dragons 항목을 더 쉽게 만들 수 있도록 도와주는 응용 프로그램을 만들려고합니다.NoSuchElementException 받기
다른 무기 목록과 다른 통계 등이 있습니다. 목록 중 2 개가 프로그램에 잘 추가되었지만 그 중 1 개가 NoSuchElementException을 throw합니다. 왜 내가 그 목록과 다른 것을 발견 할 수 없기 때문에 내가 왜 다른 목록과 비교 하는지를 이해하지 못한다.
목록에서 라인은 다음과 같다 : 당신이보고 싶은데 경우 전체 목록
Light Melee Weapon,1d4,1d6,x2,10 ft.,Slashing,Axe (Throwing),8 gp, 2lb.
http://pastebin.com/Fb2db0f1 링크가 문제를 일으키는.
http://pastebin.com/9Hg0Rw2a 잘 작동하는 목록에 대한 링크!
나는이 방법이 너무 오랫동안 보지 않기를 바랍니다. 나는 이것을 시도하고 고치기 위해 내가 생각할 수있는 모든 것을 정말로했다. 그리고 그것이 문제의 원인이되는 목록이라는 것이 긍정적입니다. 왜냐하면 내가 목적지에서 그것을 제거하자 마자 프로그램이 정상적으로 실행되기 때문입니다!
작동하는 목록에서 for 루프를 제대로 실행하지만 첫 번째 목록은 작동하지 않습니다 ._. 각 입력 라인이 9 개 항목이 있다고 가정으로이
while(st.hasMoreTokens()) {
w = new Weapon(WeaponCategory.fromString(st.nextToken()),
st.nextToken(),st.nextToken(),st.nextToken(),
st.nextToken(),st.nextToken(),st.nextToken(),
st.nextToken(),st.nextToken());
weapons.put(w.getName(), w);
}
같은
Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(StringTokenizer.java:349)
at MainGUI.init(MainGUI.java:60)
at MainGUI.main(MainGUI.java:32)
public HashMap<String,Weapon> init() {
String path = "base";
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
if(listOfFiles.length == 0) {
JOptionPane.showMessageDialog(MainGUI.this, "The folder \"base\" was empty"+
" so no weapons or armor was attempted loaded.", "Warning",
JOptionPane.WARNING_MESSAGE);
return new HashMap<>();
}
HashMap<String, Weapon> weapons = new HashMap<>();
BufferedReader r = null;
for(File f : listOfFiles) {
if(f.getName().endsWith(".txt")) {
String line;
try {
r = new BufferedReader(new FileReader(f));
while((line = r.readLine()) != null) {
Weapon w;
StringTokenizer st = new StringTokenizer(line,",");
while(st.hasMoreTokens()) {
w = new Weapon(WeaponCategory.fromString(st.nextToken()),
st.nextToken(),st.nextToken(),st.nextToken(),
st.nextToken(),st.nextToken(),st.nextToken(),
st.nextToken(),st.nextToken());
weapons.put(w.getName(), w);
}
}
} catch(FileNotFoundException fnfe) {
JOptionPane.showMessageDialog(MainGUI.this, "The File "+
f.getName() + " was not found.", "Error",
JOptionPane.ERROR_MESSAGE);
} catch(IOException ioe) {
JOptionPane.showMessageDialog(MainGUI.this, "There was a problem reading "+
f.getName() + ".", "Error",
JOptionPane.ERROR_MESSAGE);
}
}
}
try {
r.close();
} catch (IOException ex) {
JOptionPane.showMessageDialog(MainGUI.this, "An error occured while"
+ "closing the File Reader Stream:\n"+ex.getMessage(),
"Error", JOptionPane.ERROR_MESSAGE);
}
return weapons;
}
문제를 일으키는 라인을 식별 할 수에서 System.out.println (라인)를 추가합니다. 마지막 독자뿐만 아니라 모든 독자를 닫습니다. –
특정 파일에 도달하면 중지됩니다. – OmniOwl
그래서 뭐? System.out에 줄을 쓰지 못하게하는 이유는 무엇입니까? –