我正在尝试但是有时候输入4整数会产生错误的输出。请更新我的代码或给我一些想法。以下是我的示例输出。和我正在尝试的代码。
示例输出: -
input:-
3
remember
occurring
apple
diff
Same
same
代码: -
Scanner sc=new Scanner(System.in);
System.out.println("enter a number");
int flag=1;
int a=sc.nextInt();
for (int i = 0; i <a; i++) {
System.out.println("enter a string");
String s=sc.next();
char [] sq=s.toCharArray();
for (int j = 0; j < sq.length-1; j++) {
if(sq[j]==sq[j+1]) {
flag=0;
break;
}
}
if(flag==1) {
System.out.println("diff");
} else {
System.out.println("same");
}
}
答案 0 :(得分:2)
您没有将标志重置为每次运行之间的初始值。请注意,我已将您的标志更改为布尔值而不是整数,现在它在System.out.println()之前重置;
package test;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("enter a number");
boolean flag=true;
int a=sc.nextInt();
for (int i = 0; i <a; i++) {
flag=true;
System.out.println("enter a string");
String s=sc.next();
char [] sq=s.toCharArray();
for (int j = 0; j < sq.length-1; j++)
{
if(sq[j]==sq[j+1])
{
flag=false;
break;
}
}
if(flag)
{
System.out.println("diff");
}
else
{
System.out.println("same");
}
}
}
}
答案 1 :(得分:2)
只需使用Regex:简短的
public static void main(String[] args) {
String s = "dess";
boolean match = s.matches(".*([A-Za-z])\\1+.*");
if (match)
System.out.println("same");
else
System.out.println("diff");
}
答案 2 :(得分:1)
您的代码问题是您永远不会重置您的旗帜。如果你有一个“相同”的情况,那么你的标志将在程序的剩余执行时间内保持为0。因此,在第一个'相同'之后的所有情况也将产生'相同'。要解决这个问题,请将flag = 0
代码移到第一个while循环中。就像这里的某个地方:
for (int i = 0; i <a; i++) {
flag = 1;//<-- reset your flag variable
System.out.println("enter a string");
String s=sc.next();
char [] sq=s.toCharArray();
for (int j = 0; j < sq.length-1; j++)
{
etc....
那应该可以解决你的问题。 我希望这会有所帮助:)