手指计数问题:补全Java代码中index与ring手指的判断逻辑
问题分析与代码补全
先梳理计数的周期规律:整个计数以8为一个完整循环周期,各数字对应的手指及n%8的结果对应关系如下:
| 数字N | N%8 | 对应手指 |
|---|---|---|
| 1 | 1 | thumb |
| 2 | 2 | index |
| 3 | 3 | middle |
| 4 | 4 | ring |
| 5 | 5 | little |
| 6 | 6 | ring |
| 7 | 7 | middle |
| 8 | 0 | index |
| 9 | 1 | thumb(循环) |
你已实现了thumb、little、middle的判断逻辑,剩余的index和ring可通过n%8的结果直接匹配:
- 当
n%8 == 2或n%8 == 0时,对应index - 当
n%8 == 4或n%8 == 6时,对应ring
补全并优化后的完整代码如下:
import java.util.*; public class Hello { public static void main(String[] args) { Scanner sc=new Scanner(System.in); long n=sc.nextLong(); // 改用nextLong避免大数字溢出 long mod = n % 8; if(mod == 1) System.out.print("thumb"); else if(mod == 5) System.out.print("little"); else if(mod == 3 || mod ==7) System.out.print("middle"); // 统一用mod判断,逻辑更清晰 else if(mod == 2 || mod == 0) System.out.print("index"); else System.out.print("ring"); // 剩余情况为mod=4或6,对应ring } }
补充两个优化说明:
- 将
sc.nextInt()改为sc.nextLong(),避免输入超大数字时的int溢出问题 - 原middle的判断
n%4 ==3替换为mod ==3 || mod ==7,和其他判断逻辑保持一致,可读性更强
内容的提问来源于stack exchange,提问作者Tagore E
相关产品推荐
相关产品推荐

