📝现有一间教室,座位为每八个一排

现有学生48人,学生采取抽签的形式选座位(签数范围1-48)

要求用户输入抽到的数字并计算改学生在第几排?

提示:1 - 8为第一排,9 - 16为第二排...以此类推

📖座位结构:

第一排 1 - 8, 第二排 9 - 16

第三排 17 - 24, 第四排 25 - 32

第五排 33 - 40, 第六排 41 - 48

🤔算法分析:

每排8个人,使用序号范围1 - 48,48 ÷ 8 = 6,6排正好够容纳48人

使用抽选到的序号除8,如33 / 8 = 4.1,如有小数则向上取整,即得5,第五排

使用抽选到的序号除8取余,如33 / 8 = 4余1,即得1,第5排的第1位

注:余数如果为0则为第8位,如40 / 8 = 5余数0,为第8位

✏算法编写:

//Num为抽取序号,Mark为每排的人数
(int)Math.rint(Num / Mark + 0.4)				//求排数
(int)((Num % Mark != 0) ? Num % Mark : Mark)	//求位数

除数结果加0.4是为了向上取整,通过系统函数进行四舍五入

但由于函数返回类型是双精度,所以最后要使用强制转换转为整数

由于题目并没有要求得出结果排数的第几名,所以只求出学生所在排数即可

📑运行代码:

package Project;

import java.util.Scanner;

public class Universal {
        public static void main(String[] args) {
                Scanner Scan = new Scanner(System.in);
                System.out.printf("请输入学生序号:");
                float Num = Scan.nextFloat();
                System.out.printf("这个学生座位在:第");
                System.out.printf((int)Math.rint(Num / 8 + 0.4) + "排");
                Scan.close();
        }
}