2014-07-24 2 views
-2

저는 Java로 코딩하는 데 새로운 경험이 있으며 문자 템플릿을 만드는 플러그인을 만들려고합니다. 사용자는/char name 명령을 입력합니다. 명령 발신자의 파일이 존재하는지 확인한 다음 .dat 파일에 "Name :"필드 아래에 쓰기를 원합니다. 파일이 존재하지 않으면 파일을 작성하고 해당 필드에 기록합니다. 내가 겪고있는 유일한 문제는 파일을 만들고 쓰고 읽는 것입니다. 한순간에 나는 그 파일을 "Name : Gender"와 같이 멍청한 글을 쓸 수 있기 때문에 사용자 파일을 만들고 설정 한 이름을 쓰려고했지만 쓸 수는 없었습니다. 또한 파일에서 읽는 방법을 알지 못하고 머리 위로 이름 태그를 변경하기 위해 이름을 지정할 수 있어야합니다. 내가 어떤 이유로, 그것은 생성하지 않기 때문에 작동하는지 테스트하기 위해 .yml 파일을 사용하고Java (Bukkit) 플레이어 파일을 읽거나 쓰는 방법

if (label.equalsIgnoreCase("char gender")) { 
     if (args.length < 2) { 
      sender.sendMessage("/char gender <Male or Female>"); 
      return false; 
     } 
     if (args.equals("male")) { 
      PrintWriter writer1; 
      try { 
       writer1 = new PrintWriter("plugins/Guildplate/PlayerData/" + sender.getName() + ".yml", "UTF-8"); 
       writer1.println("Gender: Male"); 
       writer1.close(); 
      } catch (FileNotFoundException | UnsupportedEncodingException e) { 
       File file = new File("plugins/Guildplate/PlayerData/" + sender.getName() + ".yml"); 
      } 
     } 
     else if (args.equals("female")) { 
      PrintWriter writer1; 
      try { 
       writer1 = new PrintWriter("plugins/Guildplate/PlayerData/" + sender.getName() + ".yml", "UTF-8"); 
       writer1.println("Gender: Female"); 
       writer1.close(); 
      } catch (FileNotFoundException | UnsupportedEncodingException e) { 
       File file = new File("plugins/Guildplate/PlayerData/" + sender.getName() + ".yml"); 
      } 
     } 
     else { 
      sender.sendMessage("/char gender <male or female>"); 
     } 

:

내가 "/ 문자 성별"명령에 사용하고있는 코드의 예입니다 player.dat

+0

당신이 스택 추적을 게시 할 수 작동하지 않을 경우? ? – TheJavaCoder16

답변

1

당신은 잘못 args 배열을 사용하고 있습니다 :

if (args.equals("male")) 

,691을
else if (args.equals("female")) 

String[]은 결코 String 일 수 없으므로 항상 실패합니다.

if (args[2].equals("male")) 

else if (args[2].equals("female")) 

또한, 사용자의 에러 체크는 다음과 같아야합니다 :

if (args.length <= 2) 

"/char gender male" -> new String[]{"/char", "gender", "male"} 

당신은 사용해야합니다 다음과 같이 가정하고 args은 번역 요처럼 올바르게 지정하려면 3 가지 인수가 필요합니다.

0

레이블은 따라서에 공간이 없습니다

을 (label.equalsIgnoreCase ("문자의 성별"))

관련 문제