2014-11-01 27 views
-6

寫一個程序,給定一個字符串s和炭c時,打印出「是」,如果存在sc 。否則打印出「否」。 (您預計使用循環做你 只能使用長度()和的charAt()字符串類型的函數。)我有這個代碼的問題,我也得到肯定的答案都

例子:

south u --> yes 
north T --> no 

輸出應該完全一樣這樣的:

>Please enter a string: 
>ahmet 
>Please enter a char: 
>m 
>yes 

我試圖實現它,但我不知道什麼是概率在我的代碼中lem。我總是變得「真實」。 在我的實現中,我使用了一個可以是0或1的整數。 如果它是0,我打印false。 如果它是1,我打印真實。

這是我的代碼:

package ass32; 

import java.util.Scanner; 

public class ass33 
{ 
    public static void main(String[] args) 
    { 
     Scanner in = new Scanner(System.in);   
     System.out.println("give me any string : ");   
     String name = in.next(); 
     System.out.println(">Please enter a char: ");    
     char c = in.next().charAt(0); 
     int e = 0 ; 
     int t = name.length(); 
     char f ; 
     char s ; 
     for (int i = 0 ; i <t ; i++) { 
      f = name.charAt(i);   
      for (int j = 0 ; j <t ; j++) { 
       s = name.charAt(j); 
       if (s==f) 
        e = 1 ;    
      } 
     } 

    if (e==1) 
     System.out.println("yes");   
    else if (e==0) 
     System.out.println("no"); 
    }  
} 
+0

這就是Java代碼而不是C或C++! – Rizier123 2014-11-01 08:46:20

+0

因爲e總是1!爲什麼你有兩個循環? – 2014-11-01 08:50:05

回答

1

你是比較針對相同字符串的所有字符字符串的所有字符,所以當然找到匹配,並返回「是」。你只需要一個循環。

所有你需要的是:

e = 0; 
for (int i = 0 ; i <t ; i++) {  
    f = name.charAt(i); 
    if (f==c) { 
     e = 1; 
     break; 
    } 
} 
+0

謝謝你很多它的工作 – 2014-11-01 09:34:32

0

你應該試試這個:

for (int i = 0; i < t; i++) { 
    f = name.charAt(i); 
    for (int j = 0; j < t; j++) { // Remove this loop 
     s = name.charAt(j); // Remove this also 
     if (s == f) { // Change this to (c==f) 
      e = 1; 
     } 
    } 
} 
+0

謝謝你喲它的工作 – 2014-11-01 09:35:47

0

試試這個:

boolean isCharFound = false; 
for (int i = 0 ; i <t ; i++) {  
    f = name.charAt(i); 
    if (f==c) { 
     isCharFound = true; 
     break; 
    } 
} 
  • 使用兩個迴路具有相同的字符串,所以如果您的字符串是「abc」,那麼您將abc與abc進行比較,因此您總是會看到sat字符一個在同一個字符串abc目前。這就是錯誤。
  • 改進代碼的另一種方法是,您應該使用布爾值而不是整數來表示是否在字符串中找到字符。
+0

謝謝,是的,它現在工作 – 2014-11-01 09:35:00

相關問題