2012-11-02 4 views
0

이 코드의 if 문은 내가하는 일에 상관없이 항상 true를 반환합니다. 프로그램에 인수를주지 않더라도 nullPointerException이 표시되며 if 문이 true를 반환 함을 나타냅니다. 너 나 좀 도와 줄 수있어? 나는이 프로그램에 인수를 포기하지 않더라도Java - If 문이 항상 true를 반환합니다.

import java.io.*; 
import java.util.*; 

public class Oblig4 { 
    static Menu menu = new Menu(); 
public static void main(String[] args) { 
    if(args[0].matches("^[a-zA-Z0-9]{1,40}\\\\.txt$") && args[1].matches("^[a-zA-Z0-9]{1,40}\\\\.txt$")){ 
     menu.menu(args[0], args[1]); 
    } 
    else{ 
     System.out.println("You have not given the correct arguments."); 
    } 
    } 

} 
+5

을 문 사실이 반환되지 않습니다. matches 함수는 arg [0]이 null이므로 널 포인터 예외를 제공합니다. – vikiiii

+0

NPE 예외가 발생하면 어떻게 될까요? – PermGenError

+0

args [1]과 args [2]를 사용하고 싶을 수도 있습니다. – Shark

답변

0

, 나는 경우 문 그것이 NPE를 던졌습니다 경우 그것이 사실 일 것 아닙니다

진정한 반환을 나타내는는, NullPointerException를 얻을 수 . 은 첫째로 당신은 당신이 JSAP 라이브러리를 사용하여 인수를 구문 분석하는 문제를 방지 할 수 matches

0

가 포함 if 문 가기 전에 args[0]args[1]에 대한 null 확인해야합니다. 인수 또는 인수하지 않는 경우 유효한 사용자가 볼 수

import java.io.File; 
import java.util.regex.Pattern; 

import com.martiansoftware.jsap.FlaggedOption; 
import com.martiansoftware.jsap.JSAP; 
import com.martiansoftware.jsap.JSAPException; 
import com.martiansoftware.jsap.JSAPResult; 
import com.martiansoftware.jsap.stringparsers.FileStringParser; 

public class Oblig4 { 

    private Pattern fileNamesPattern = Pattern 
      .compile("^[a-zA-Z0-9]{1,40}\\.txt$"); 
    private JSAP jsap = new JSAP(); 

    public static void main(String[] args) throws JSAPException { 
     Oblig4 oblig4 = new Oblig4(); 
     oblig4.init(); 
     JSAPResult config = oblig4.jsap.parse(args); 
     if (!config.success()) { 
      System.err.println(); 
      System.err.println("Usage: "); 
      System.err.println("java -jar jar_file_name.jar " 
        + oblig4.jsap.getUsage()); 
      System.err.println(oblig4.jsap.getHelp()); 
      System.err.println(); 
      return; 
     } 
     File firstFile = config.getFile("firstFile"); 
     File secondFile = config.getFile("secondFile"); 
     if (!oblig4.fileNamesIsValid(firstFile, secondFile)) { 
      System.out.println("File names is not valid. See pattern " 
        + oblig4.fileNamesPattern.pattern()); 
     } 
     Menu menu = new Menu(); 
     menu.doSomething(firstFile, secondFile); 
    } 

    private void init() throws JSAPException { 
     FileStringParser fileStringParser = FileStringParser.getParser(); 
     fileStringParser.setMustBeDirectory(false); 
     fileStringParser.setMustBeFile(true); 
     fileStringParser.setMustExist(false); 
     FlaggedOption firstInputFile = new FlaggedOption("firstFile") 
       .setStringParser(fileStringParser).setRequired(true) 
       .setShortFlag('f'); 
     firstInputFile.setHelp("First text file"); 
     jsap.registerParameter(firstInputFile); 

     FlaggedOption secondInputFile = new FlaggedOption("secondFile") 
       .setStringParser(fileStringParser).setRequired(true) 
       .setShortFlag('s'); 
     secondInputFile.setHelp("Second text file"); 
     jsap.registerParameter(secondInputFile); 
    } 

    private boolean fileNamesIsValid(File... files) { 
     for (File file : files) { 
      if (!fileNamesPattern.matcher(file.getName()).find()) { 
       return false; 
      } 
     } 
     return true; 
    } 
} 

class Menu { 
    public void doSomething(File firstFile, File secondFile) { 

    } 
} 

: 그것이 얼마나 간단한 참조

Usage: 
java -jar jar_file_name.jar -f <firstFile> -s <secondFile> 
    -f <firstFile> 
     First text file 

    -s <secondFile> 
     Second text file 
관련 문제