JAVA 位号求排数
📝现有一间教室,座位为每八个一排
现有学生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();
}
}