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