2016-09-22 60 views
0

我在每次迭代期間掃描2個字符串並將其存儲在s和t中。僅在第一次迭代期間,我掃描的第一個字符串被存儲在t中,而不是在s中(我通過在eclipse中調試瞭解了這一點)。在連續的迭代過程中,這段代碼可以正常工作。我無法理解第一次迭代期間發生了什麼。請幫幫我。謝謝。無法在第一次迭代中接受兩個字符串,但在連續迭代中工作正常

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

public class ResidentInfo { 

public static void main(String[] args) { 
    /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */ 
    Scanner scan = new Scanner(System.in); 
    int i,n; 
    n = scan.nextInt(); 
    for(i=0 ; i<n ; i++) 
    { 
     int sl,tl,j,k; 
     String s, t; 
     boolean flag = false; 

     s = scan.nextLine(); 
     t = scan.nextLine(); 
     sl = s.length(); 
     tl = t.length(); 
     char[] sa = new char[sl]; 
     char[] ta = new char[tl]; 
     sa = s.toCharArray(); 
     ta = t.toCharArray(); 
     for(j=0 ; j<sl ; j++) 
     { 
      for(k=0 ; k<tl ; k++) 
      { 
       if(sa[j]==ta[k]) 
       { 
        flag = true; 
        break; 
       }      
      } 
      if(flag) 
      { 
       break; 
      } 
     } 
     if(flag) 
     { 
      System.out.println("YES");    
     } 
     else 
     { 
      System.out.println("NO"); 
     } 
    } 
} 
} 
+0

,什麼是存儲在's'。此外,爲了調試問題,您可以在代碼中添加多個打印語句(在發現問題後將其刪除)。 –

+0

@ redflar3我在鍵盤上獲取用戶的字符串輸入並將其存儲在s中。但只有在第一次迭代時,for循環內的代碼才能正常工作。第一次迭代中沒有任何內容存儲在s中。 –

+1

你的程序做什麼?你在輸入什麼?預期的結果是什麼,實際結果是什麼? –

回答

0

該代碼所做的第一件事是確定兩個字符串的長度是否相等。如果字符串的長度不相等,代碼將打印否。如果長度相等,則代碼將檢查字符串中完全相同索引中的每個字符,以查看它們是否相等。如果特定索引處的字符不相同,則代碼將打破循環並打印編號。如果每個索引處的所有字符都相同,則代碼打印是。您在詢問關於下一個()的問題nextLine()嘗試:Question asked already.

Scanner scan = new Scanner(System.in); 
System.out.print("enter a number: "); 
int n = scan.nextInt(); 


for(int i=0; i < n; i++) 
{ 
    boolean flag = true; 

    System.out.print("enter something for s: "); 
    String s = scan.next(); 

    System.out.print("enter something for t: "); 
    String t = scan.next(); 

    if(s.length() == t.length()) 
    { 
     for(int j = 0; j < s.length(); j++) 
     { 
      if(s.charAt(j) != t.charAt(j)) 
      { 
       flag = false; 
       break; 
      } 
     } 
     if(flag) 
     { 
      System.out.println("Yes"); 
     } 
     else 
     { 
      System.out.println("NO"); 
     } 
    } 
    else 
    { 
     System.out.println("NO"); 
    } 
在第一次迭代
+0

謝謝@JohnKugelman。我試圖添加和解釋。 – Sedrick