我需要一个Java程序来识别10到99之间整数的相似数字。 例如,如果我输入23和62,程序的输出应该是它们具有相似的数字。 我已经编写了这个程序,但它无法正常工作
公共课问题{
public static void main(String[] args) {
Scanner scan = new Scanner (System.in) ;
int a = scan.nextInt() ;
int b = scan.nextInt() ;
int l = a%10 ;
int j = b%10 ;
int f = a%100 ;
int d = b%100 ;
if (a>99 && a<10 && b>99 && b<10) {
System.out.println("N/A") ;
}
if (l==j){
System.out.println("They have a similar digit");
}
else if(f==d){
System.out.println("They have a similar digit");
}
else if(l==d){
System.out.println("They have a similar digit");
}
else if(f==j){
System.out.println("They have a similar digit");
}
else
System.out.println("They don't have similar digit");
}
}
答案 0 :(得分:1)
以下是使用字符串的简单解决方案:
String s1 = "" + numberOne;
String s2 = "" + numberTwo;
outer:
for(char c : s1.toCharArray()) {
for(char d : s2.toCharArray()) {
if(c == d) {
System.out.println("They have the same digit.");
break outer;
}
}
}
答案 1 :(得分:0)
计算低位数的方式是正确的,但计算高位的方式是错误的:在获得余数之前,需要将数字除以10整数除以:
int f = (a/10) % 10;
由于您提供的输出始终相同,因此最好将这四个条件合并为一个OR
运算符,如下所示:
if ((l==j) || (f==d) || ... )
答案 2 :(得分:0)
问题是你的声明
int f = a % 100;
int d = b % 100;
我想你想要的第一个数字,在这种情况下你应该使用
int f = a / 10;
int d = b / 10;
答案 3 :(得分:0)
你可以试试这个:
int f = a / 10;
int d = b / 10;
同样改变你的if条件: -
if((a>99 || a<10) && (b>99 || b<10))
答案 4 :(得分:0)
试试这个
int l = a%10 ;
int j = b%10 ;
int f = a/10 ; // notice the division
int d = b/10 ;
答案 5 :(得分:0)
你可能想要||而不是&amp;&amp;在这一行:
if (a>99 && a<10 && b>99 && b<10) {
只有极少数会大于99且小于10.;)
答案 6 :(得分:0)
您还可以查看n1p1缩写为第一个参数的第一部分以及n2p2等等。
if ((num1 < 10 || num1 > 99) || (num2 < 10 || num2 > 99)) {
return false;
}
int n1p1 = num1 / 10;
int n1p2 = num1 % 10;
int n2p1 = num2 / 10;
int n2p2 = num2 % 10;`
n1p1 = (char) n1p1;
n1p2 = (char) n1p2;
n2p1 = (char) n2p1;
n2p2 = (char) n2p2;
if ((n1p1 == n2p1 || n1p1 == n2p2) ||
(n1p2 == n2p1 || n1p2 == n2p2) ||
(n2p1 == n1p1 || n2p1 == n1p2) ||
(n2p2 == n1p1 || n2p2 == n1p2)) {
return true;
}
return false;