2017-06-10 5 views
1

私は入力から取った長さzの字句的に最も小さい部分文字列を見つけようとしています。 最小の部分文字列を見つけようとしているのになぜif条件が機能しないのか分かりません。2文字列を辞書学的に比較する

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

public class Solution { 

    public static void main(String[] args) { 

     Scanner ip=new Scanner(System.in); 

     String s=ip.next(); 
     int z=ip.nextInt(); 
     String max=""; 
     String mini=""; 
     String x=""; 

     for(int i=0;i<s.length()-z;i++) { 
       x=s.substring(i,i+z); 
       if(x.compareTo((mini))<0) //this is not working 
        mini=x; 

       if(x.compareTo((max))>0) 
        max=x; 
      } 
     System.out.print(mini); 
     System.out.print(max); 
    } 
} 
+0

あなたは何を求めていますか? –

+0

最小の部分文字列を見つけようとしているコードを参照してください。 – Eduardo

+1

最初にminiを空文字列として宣言していますので、変更されていません。 miniとmaxの両方を、入力文字列の任意のz長の部分文字列として初期化する必要があります。 'mini = max = s.substring(0、z);' –

答えて

1

xにそれらを比較する際の条件は、期待される結果を返さないと、その値は

は変更されませんので、あなたはすでに空の文字列としてそれらを初期化し、両方の変数 minimax

の宣言に問題

あなたはそれらを初期化することができます。

mini = s.substring(0, z); 
max = s.substring(0, z); 

編集

あなたはこの条件をテストしようとした場合:

x.compareTo((""))それはいつもminiは、いかなる場合においても変更されません0よりも大きな値を返します。

関連する問題