⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 homework6.java

📁 java课程的资料以及实验的代码
💻 JAVA
字号:
import java.util.*;
public class homework6 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		homework6 h6=new homework6();
		Scanner s6=new Scanner(System.in);
		int m,person;			//m是初始值,person是人数
		do
		{
			System.out.print("请输入m的初始值:");
			m=s6.nextInt();
		}while(m<1);			//为了使输入有效
		do
		{
			System.out.print("请输入人数:");
			person=s6.nextInt();
		}while(person<1);		//为了使输入有效
		int[] order=new int[person];	//用于存放最终返回的顺序编号数组
		int[] psw=new int[person];		//纪录每个人的密码
		for(int i=0;i<person;i++)		//手工任意大于0的密码
		{
			do
			{
				System.out.print("请输入第"+(i+1)+"个人的密码:");
				psw[i]=s6.nextInt();
			}while(psw[i]<1);
		}
		order=h6.arr(m, psw);		//调用arr方法,order接收返回数组
		System.out.print("出列的顺序为:");//输出打印
		for(int i=0;i<person;i++)
		{
			if(i!=person-1)
			{
				System.out.print(order[i]+"->");
			}
			else
			{
				System.out.print(order[i]);
			}
		}
		
	}
	public int[] arr(int M,int[] Psw)
	{
		int count=Psw.length;	//由传入的Psw数组的长度确定游戏回合数
		int temp,start=0;		//temp纪录的是每回合,自起始人至结束人的增量
		int[] ord=new int[count];//ord数组用于存放出列者的顺序
		for(int i=0;i<count;i++)
		{
			temp=M%(count-i)-1;  //计算每回合的增量
			start=(start+temp)%Psw.length;	//计算即将开始的回合的起点位置
			while(Psw[start]==(-1))		//判断,当前位置是否已经出列
			{
				start=(start+1)%Psw.length; //若已经出列,位置向后移一位
			}								//直到该位置未出列为止
			M=Psw[start];					//将密码赋予M
			Psw[start]=(-1);				//将当前位置,标记为已经出列
			ord[i]=start+1;					//将出列者的序号记录下来
			start++;						//将下一个位置作为下一轮的起始位
		}
		return ord;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -