2017-08-24 2 views
0

現在、Javaでプログラミングを学習しています。文字列contains()は、文字列内の特定の文字列が存在するかどうかを確認するために使用されます。しかし、指定されたコードでは、文字列が存在していてもcontains()はfalseを返します。文字列が存在しても、JavaのString contains()はfalseを返します。

import java.util.*; 
class StringPractice1{ 
public static void main(String arg[]){ 
    System.out.println("Enter a string:- "); 
    Scanner sc1 = new Scanner(System.in); 
    String s1 = sc1.next(); 
    System.out.println("Enter the string you want to find:- "); 
    Scanner sc2 = new Scanner(System.in); 
    String s2 = sc2.next(); 
    if(s1.contains(s2)){ 
     System.out.println("It contains the string '"+s2+"'."); 
    } 
    else{ 
     System.out.println("No such string exists."); 
    } 
}} 

Output screen

+7

'Scanner'の' next() 'は、行全体ではなくただ1つの単語を返します。また、すべての入力に対して新しい 'Scanner 'を使用しないでください。その行動はあなたが期待するものではないかもしれません。 – ajb

+0

私は、スキャナの入力からラインセパレータで何かが起こっていると思います。 –

+1

'else'ブロックの後に次の行を追加すると、何が起こるのかがわかります:' System.out.printf( "s1:" + s1 + "; s2:" + s2 + ";"); ' – alfasin

答えて

1
String s1 = sc1.next(); 

ためだけのスペースが発生したことを、あなたのケースで一つの単語、すなわちIがかかります。

ただし、sc1.nextLine();を使用した場合は、「I'm a boy」という文章全体が使用されます。それによってあなたの問題を解決します。

+0

ありがとう、これはまさに私が探していたものでした。 –

関連する問題