java - 控制流说明
问题描述
编写一个名为 hasSharedDigit 的方法,其中包含两个 int 类型的参数。
数字在 10 到 99 之间
如果两个数字中都出现了一个数字,例如 12 和 23 中的 2,则该方法应该返回 true;否则,该方法应返回 false。
我有一个解决方案,但不太明白它是如何工作的。我需要英文解释。
public class SharedDigit {
public static boolean hasSharedDigit(int numA,int numB){
if((numA<10||numA>99)||(numB<10||numB>99)){
return false;
}
int realNumB=numB;
while(numA>0){
int numADig=numA%10;
while(numB>0){
int numBDig=numB%10;
if(numADig==numBDig){
return true;
}
numB=numB/10;
}
numA=numA/10;
numB=realNumB;
}
return false;
}
}
我不明白这段代码如何检查匹配数字的所有可能性
解决方案
这里:
while(numA>0){
int numADig=numA%10;
使用模运算符“获取”数字的最后一位,请参阅此处了解更多信息。所以这第一步让你得到例如 13 中的“3”。
稍后,您执行以下操作:
numA=numA/10;
这将 13 变成 1(整数除法)!之前的初始循环条件确保您在执行 13 / 10 .. 然后 1 / 10 时停止。
所以这个循环将 13 变成 3,然后是 1,然后停止。
并且使用相同的“方法”来获取第二个数字的数字。一旦你在两个数字中找到一个数字,你就可以返回 true。
否则,如果您遍历第一个数字的所有数字,并将它们与第二个数字中的所有数字进行比较……不匹配,返回 false。
顺便说一句,这里的真正答案是:当您不了解代码的作用时:
- 使用搜索引擎来研究你不知道的来源中的所有东西
- 使用调试器或简单的 System.out.printl() 语句让您自己观察代码在做什么
- 最后,当所有这些都失败了,让你有疑问时,来这里寻求帮助
推荐阅读
- python - 带有 lightgbm 的 GridSearchCV 需要不使用 fit() 方法?
- bash - 在循环 bash 中使用变量
- c++ - 为什么 int 类型的枚举类值不能用作 int
- python - 如何从 DBpedia 中找出所有 skos:broader 关系,以便使用 SPARQL 查询构建概念层次结构(树)
- excel - 如何将蓝色的单元格计数到另一张纸上的单元格中?
- reactjs - React Froala Editor 不显示段落下拉菜单
- c++ - ntdll.dll 库函数中用户模式调用的 STATUS_ACCESS_VIOLATION 原因
- scala - 系统 SBT 没有在代码中提取类型参数,Intellij sbt 可以
- amazon-web-services - AWS Lambda 上的 Apollo graphql 服务无法读取 null 的属性“接受”
- blazor - 函数被执行,我不知道为什么