2016-06-12 15 views
0

別のクラスを使用して別のクラスのデータを返そうとしています。 このクラスは、クラスに送信された引数に応じて、パスワードまたはキーを返します。Java関数の引数

これは、データを返すクラス内の関数です:

public static String main(String args[]){ 
     if (!args.equals(null)){ 
      String gen = generatePassword(args[1]); 
      return gen; 
     }else{ 
      String gen = generateRandomString(); 
      return gen; 
     } 
    } 

私の誤差がある:34と

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
at me.GaryIsASloth.KeyGenerator.main(KeyGenerator.java:34) 

を参照:

if (!args.equals(null)){ 

提供引数う"true"/"false"の後に "pass"するか、クラスに特殊文字を含めるかどうかを指示します。 キーの場合、argsはnullになります。

私はキーで作業していたときにクラスを完璧に動作させていましたが、変更後にはパスワードで正常に動作しました。しかし、私は引数に依存して、両方で動作させることはできません。私はヌルチェックと長さチェックを試みました。私に何ができる?

答えて

0

nullをチェックするときは、something.equals(null)をチェックすることはできません。equalsはメソッドであり、nullで呼び出すことはできません。 Nullはオブジェクトではありません。第2に、アレイの要素は0から番号が付けられ、最初の要素はarg[0]になります。

public static String main(String args[]){ 
     String gen; 
     if (args != null){ 
      gen = generatePassword(args[0]); 
     }else{ 
      gen = generateRandomString(); 
     } 
     return gen; 
    } 
+0

'return gen!= null? generatePassword(args [0]):generateRandomString(); 'ははるかにクリーンですimo – Idos

+0

@Idosは同意しますが、初心者にとっては複雑すぎる可能性があります。 –

+0

@idosあなたの提案を修正してください。 –

0

ここでこの:

if (!args.equals(null)){ 
      String gen = generatePassword(args[1]); 
      return gen; 

引数がnullではないという理由だけで、これは2つの要素を持っている意味ですか?以下のようにそれを行うJavaがその偶然が許可されていないので、 のように見える方法を持っているので、

String main(String[] args) 

があなたの代わりにif (!args.equals(null))をチェックする

+0

これはOPの問題ではありません。 – Idos

0

をコンパイルする:ここ

これはとても良いアイデアではありませんこのif (args != null)

args[1]

にアクセスする場合は、引数の数が正しいかどうかを確認する必要があります。
if(args.length == 2)