2016-10-01 63 views
0

本質上,我的任務應該採取2個單詞,計算我做過的兩個中最小的一個,但現在我需要引用最小的單詞本身而不是數字。我認爲我需要一個If語句,但是我不能讓我的字符串初始化,並且在我用system.out.println命令結束程序時控制檯變得挑剔。當前如果語句涉及字符串

Scanner scan = new Scanner(system.In); 
System.out.println(" Input first password "); 
String pass1 = scan.nextLine(); 
Int pass1l = pass1.length(); 
System.out.println(" input second password "); 
String pass2 = scan.nextLine(); 
Int pass2l = pass2.length(); 
Int spassl = Math.min(pass1l,pass2l); 
// problematic part here. 
String spass; 
If (pass1l > pass2l){ spass = pass2} 
else if (pass1l < pass2l) {spass = pass1} 
else if (pass1l == pass2l) {spass = null;}; 

此外,其他的if語句出現爲不是語句,第一個是表達式的非法開始。

然後,如果我修復那些我與system.out稱爲spass,它說它沒有初始化。我剛剛開始學習基本的Java,我之前使用過處理,但不是與字符串相關的if語句,而只是整數。

回答

1

你快到了。變量spass需要初始化,因爲如果沒有final else,則使用塊。要麼你給了spass =「」或者改變最後的else,如果其他的如下。

Scanner scan = new Scanner(System.in); 
    System.out.println(" Input first password "); 
    String pass1 = scan.nextLine(); 
    System.out.println(" input second password "); 
    String pass2 = scan.nextLine(); 
    // problematic part here. 
    String spass; 
    if (pass1.length() > pass2.length()) { 
     spass = pass2; 
    } else if (pass1.length() < pass2.length()) { 
     spass = pass1; 
    } else { 
     spass = null; 
    } 
    System.out.println("result: " + spass); 
+0

在我看來,你shoudn't推薦代碼不帶括號的初學者=/ –

+0

你是對的拜見。現在添加所需的大括號。 –

0

您的問題僅僅是一個格式化的問題,如果語句formatet這樣的:

if(condition){ 
    do_something; 
}else if(second_condition){ 
    do_something_else; 
}else{ 
    alternative; 
} 

你的情況看來,你不知道在哪裏設置分號;

你必須這樣設置,如果塊中分號:

String spass; 
If (pass1l > pass2l){ 
    //Here semicolon 
    spass = pass2; 
} else if (pass1l < pass2l) { 
    //Here semicolon 
    spass = pass1; 
}else if (pass1l == pass2l) { 
    //Here semicolon 
    spass = null; 
} 
//No semicolon at the end of the if-else-statement