用switch实现报数题

qq_42337384 2018-12-17 03:14:08
8人一排,第一个开始报数,求8411250。 ADCDEFGH 1→2→3→4…8 15←14←13.…←9
...全文
263 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangphh 2019-01-07
  • 打赏
  • 举报
回复
因为从开始每两行就会重复执行与之前两行相似的过程,所得结果也会与前面两行对应相等
RUA好多鱼~ 2018-12-29
  • 打赏
  • 举报
回复
为啥要对16取余?
zhangphh 2018-12-17
  • 打赏
  • 举报
回复
上面代码少了个东西

public class Test {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();//输入第x个人
        int y = x%16;
        if(y == 0 || y == 1)
            System.out.println("A");
        switch(y){
            case 2:
            case 15:
                System.out.println("B");
                break;
            case 3:
            case 14:
                System.out.println("C");
                break;
            case 4:
            case 13:
                System.out.println("D");
                break;
            case 5:
            case 12:
                System.out.println("E");
                break;
            case 6:
            case 11:
                System.out.println("F");
                break;

            case 7:
            case 10:
                System.out.println("G");
                break;
            case 8:
            case 9:
                System.out.println("H");
                break;
        }
    }
}
zhangphh 2018-12-17
  • 打赏
  • 举报
回复
最简单的方法,就是与16取余

public class Test {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();//输入第x个人
        int y = x%16;
        if(y == 0)
            System.out.println("A");
        switch(y){
            case 2:
            case 15:
                System.out.println("B");
                break;
            case 3:
            case 14:
                System.out.println("C");
                break;
            case 4:
            case 13:
                System.out.println("D");
                break;
            case 5:
            case 12:
                System.out.println("E");
                break;
            case 6:
            case 11:
                System.out.println("F");
                break;

            case 7:
            case 10:
                System.out.println("G");
                break;
            case 8:
            case 9:
                System.out.println("H");
                break;
        }
    }
}
如果想重复输入,可以提取出来成为一个单独的方法用while(true)
qq_39936465 2018-12-17
  • 打赏
  • 举报
回复

import java.util.Scanner;

public class test5 {

public static void main(String[] args) {
// TODO Auto-generated method stub
int remainder, quotient, divisor;
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("请输入一个整数:");
divisor = sc.nextInt();
quotient = Math.floorDiv(divisor, 8);
remainder = divisor % 8;
if (remainder == 0) {
remainder = 8;
quotient--;
}
if ((quotient % 2) != 0) {
remainder = 9 - remainder;
}
switch (remainder) {
case 1:
System.out.println("A");
break;
case 2:
System.out.println("B");
break;
case 3:
System.out.println("C");
break;
case 4:
System.out.println("D");
break;
case 5:
System.out.println("E");
break;
case 6:
System.out.println("F");
break;
case 7:
System.out.println("G");
break;
case 8:
System.out.println("H");
break;
}

}

}

}

qq_42337384 2018-12-17
  • 打赏
  • 举报
回复
A开始报数,每报14个数又回到A, 用 switch求出谁报的8411250
十八道胡同 2018-12-17
  • 打赏
  • 举报
回复
请说的详细点,谢谢

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧