在第一次迭代中无法接受两个字符串,但在连续迭代期间工作正常

时间:2016-09-22 15:18:24

标签: java string

我在每次迭代中扫描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");
        }
    }
}
}

1 个答案:

答案 0 :(得分:0)

这段代码的第一件事是确定两个字符串的长度是否相等。如果字符串的长度不相等,则代码打印否。如果长度相等,则代码检查字符串中完全相同索引中的每个字符,以查看它们是否相等。如果特定索引处的字符不相等,则代码会中断循环并打印否。如果每个索引处的所有字符都相等,则代码打印为yes。

您问了一个关于 next() 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");
    }