2014-03-02 21 views
1

我想知道如果Java線if (args[0].length > 2)是一個有效的線。我正在使用命令行參數,並且想要了解第一個數組中的數字數量是否超過兩位數。例如,2014年將允許if聲明爲真。如果用戶的輸入是否是例如52則if聲明不會是真實的,它會移動到下面的else if聲明。Java:行args [0] .length可能嗎?

+1

你試過編譯它嗎?如果是的話,你爲什麼要問?如果不是,爲什麼不呢? – Smutje

+1

'args [0] .length' - > no,'args [0]'不是數組; 'args [0] .length()' - >是的,因爲'args [0]'是一個'String','String'有'.length()'方法。 – fge

回答

1

是的,你可以用String#length()方法,也是我認爲null檢查應加入

if (args[0]!=null && args[0].length() > 2) 
+0

如果這是一個'main'方法,'args'不會是'null' - 所以null檢查就是噪聲。 – yshavit

+0

好點.....更新 –

5

這是一個有效的行如果args聲明爲String[][] - 但是這不會是怎樣一個main方法將被宣佈。 length陣列的有效成員,但它不是String類的(公共)構件。

如果您嘗試檢查字符串的長度,您需要改爲length()方法。例如:

if (args[0].length() > 2) 

你可能想先檢查是否有一些參數,使用args.length。例如:

public static void main(String[] args) { 
    if (args.length == 0) { 
     System.out.println("You need to give me an argument!"); 
     return; 
    } 
    if (args[0].length() > 2) { 
     System.out.println("The first argument has more than 2 characters"); 
    } else { 
     System.out.println("The first argument has 0-2 characters"); 
    } 
} 
+0

就個人而言,我會'System.exit(2);'在缺少參數的情況下指示錯誤;)(編輯:不是'1',因爲JVM返回1如果出現未被捕獲的例外情況,可以使用'main()' – fge

+0

@fge:我*可能會這樣做(儘管我可能使用1;)但我不想讓事情複雜化超過必要。 d也許寫信給stderr ... –

0

如果args[0]是一個數組,是不null然後

if (args[0].length > 2) 

是有效的選項。

0
if (args[0].length > 2) 

invalid表達式bcoz字符串不包含任何長度字段。

更改爲

if (args[0].length() > 2)得到字符串

+0

'String'有'length'字段嗎?我知道'length()'方法。 –

+0

ohh sry錯字,字符串只包含長度方法 – Kick

0

你說的是命令行參數的長度,所以...

我想知道如果Java行「如果( args [0] .length> 2)「是一個有效的行。

argsString[],因此args[0]String。而String沒有公共靜態字段length

但是:

我想看看號碼的第一陣列中的含量超過兩位數

因此,如前所述,args[0]String這不是一個數組!。例如,與C不同,Stringchar[]沒有「直接映射」。事實上,C沒有像String那樣的東西。使用Java,您必須使用.toCharArray()String獲得char[]

如果你想找到如果String有兩個以上的數字,那麼你應該寫:

if (args[0].matches("[0-9]{2,}")) 

這將同時檢查該字符串是2個字符以上,在它的所有字符是數字。

這使用regular expression來檢查你的論點。如果正則表達式成功,您可以使用,然後轉換爲整數:

Integer.parseInt(args[0]) 

提供沒有溢出!