我是java的初学者,我有这个问题:
**Q01 7标记编写一个java程序,该程序将字符串作为输入,并使用EvenPairs(str)方法检查每个字符(即字母表)是否存在偶数对。示例测试用例
输入:“3gy41d21y363”
输出:
正如您在输出中看到的,每个字符出现只打印一次,即使它是重复的,我解决了这个问题,直到这一步我找不到一个解决方案来打印字符只打印一次,结果是真或假
这是我的代码:
package evenpairornot;
import java.util.Scanner;
public class EvenPairOrNot {
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
System.out.print("Enter a string: ");
String s1=input.nextLine();
EvenPairs(s1);
}
public static void EvenPairs(String s){
char [] chs=s.toCharArray();
int count=0;
for (int i = 0; i <chs.length; i++) {
for (int j = 0; j <chs.length; j++) {
if (chs[i]==chs[j]){
count++;
}
}
if(count%2==0)
System.out.println(s.charAt(i)+"- true");
else
System.out.println(s.charAt(i)+"- False");
count=0;
}
}
}
这是输出:
输入字符串: 3gy41d21y363
3-错误
g- False
y- true
4-错误
1-真
d- False
2- False
1-真
y- true
3-错误
6- False
3-错误
等待您的帮助!!谢谢
发布于 2018-10-06 07:53:03
下面是代码。基本上在所有的字符都被计算出来之后。在打印之前,我会向后看,以确保它不是复制品。这里有很大的优化空间,比如在计数之前进行检查,或者不计算所有字符,而只计算i之后的字符。
public static void EvenPairs(String s) {
char[] chs = s.toCharArray();
int count = 0;
for (int i = 0; i < chs.length; i++) {
for (int j = 0; j < chs.length; j++) {
if (chs[i] == chs[j]) {
count++;
}
}
boolean shouldPrint = true;
for (int k = i - 1; k >= 0; k--) { //loop though each character before the current one to check if it was already printed.
if (chs[k] == chs[i]) { //if we it was already printed don't print.
shouldPrint = false;
break;
}
}
if (shouldPrint) {
if (count % 2 == 0)
System.out.println(s.charAt(i) + "- true");
else
System.out.println(s.charAt(i) + "- False");
}
count = 0;
}
}
https://stackoverflow.com/questions/52674360
复制相似问题