JAVA练习程序(五)数组

1.有一个数组:8,4,2,1,23,344,12
  1)循环输出数组的值——使用三种方式。
  2)求数组中所有数值的和。

public static void main(String[] args) {
		// TODO Auto-generated method stub
int[] arry = {8,4,2,1,23,344,12};		
		int total =0 ;		
		//for循环输出
		System.out.println("for循环输出");
		for(int i = 0 ; i<arry.length ; i++) {
			System.out.print(arry[i] + "  ");
			total +=arry[i];
		}	
		System.out.println();
		
		//Arrays.toString函数输出
		System.out.println("Arrays.toString函数输出");
		System.out.print(Arrays.toString(arry)  + "  ");		
		System.out.println();
		
		//foreach循环输出
		System.out.println("foreach循环输出");
		for(int a:arry)
			System.out.print(a + "  ");
		
		System.out.println("\n数组所有元素的和为:" + total);
		}

2.猜数游戏:从键盘中任意输入一个数据,判断数组中是否包含此数,要求每一个功能独立成方法。

Scanner input = new Scanner(System.in);
		System.out.println("请输入一个数:");
		int number = getnumber();	
		int[] array = getarray();
		if(surchnumber(number , array)) {
			System.out.println("有");
		}else {
			System.out.println("没有");
		}
		
	}
/**
 * 键盘输入一个数
 */
	public static int getnumber() {	
		Scanner input = new Scanner(System.in);
		int num = input.nextInt();
		return num;
	}
/**
 * 判断输入的数是否存在在数组里
 */
	public static boolean surchnumber(int num , int[] array) {
		for(int i = 0 ; i<array.length ; i++) {
			if(num == array[i]) {
				return true;
			}
		}
		return false;
	}
/**
 * 键盘输入数组
 */
	public static int[] getarray() {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入数组长度:");
		int size = input.nextInt();
		int[] array = new int[size];
		for(int i = 1 ; i<=size ; i++) {
			System.out.println("请输入第" + i + "个数:");
			array[i-1] = input.nextInt();
		}
		return array;
	}

3.找出两个数组中的差异元素并存入一个新的数组,假设每个数组内部都没有重复元素

	int[] array1 = {1,2,3,4,5};
		int[] array2 = {3,4,5,6,7};
		finddifferent(array1,array2);
	}
/**
 * 
 */
	public static void finddifferent(int[] array1 , int[] array2) {
		ArrayList  different = new ArrayList();
		for(int i =0 ; i<array1.length ; i++) {
			for(int j = 0 ; j<array2.length ; j++) {
				if(array1[i] == array2[j]) {
					different.add(array1[i]);
				}
			}
		}
		System.out.println("相同元素为:" );
		for(int i = 0 ; i<different.size() ; i++) {
			System.out.print((int) different.get(i) + ",");
		}

4.取1-100的10个随机数存入数组中,要求数据不能重复

public static void main(String[] args) {
		// TODO Auto-generated method stub
			getrandom();
	}
	/**
	 * 
	 */
	public static void getrandom() {
		int num;
		int[] number =new int[10];
		loop:for(int i =0 ; i<10 ; i++) {
					num = (int)(Math.random()*99 +1);
					for(int j = 0 ; j<i ; j++) {
						if(num == number[j]) {
							i--;
							continue;
						}
					number[i] = num;
					}
				}
		System.out.println(Arrays.toString(number));
	}

5. 设计一个方法,将数组中的数据打乱顺序

public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] list = new int[10];
		for(int i = 0 ; i<list.length ; i++) {
			list[i] = (int)(Math.random()*100);
		}
		System.out.println("打乱前" + Arrays.toString(list));
		shuffling(list);
		System.out.println("打乱后" +Arrays.toString(list) );
	}
	public static void shuffling(int[] list) {
		for(int i = 0 ; i<list.length ; i++) {
			int index = (int)(Math.random()*list.length);
			int temp = list[i];
			list[i] = list[index];
			list[index] = temp;
		}
	}

6.n(自定义输入)个人围成一圈,并依次编号1-n,从编号为1的人开始按顺时针方向每隔一人选出一个,剩下的人重新围成一圈,如此循环,直到只剩下1,2人,如果你想成为这两个幸运儿,问:最开始你应该站在什么位置.

public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		System.out.println("请输入人数");
		int num = input.nextInt();
		lockeydog(num);		
	}	
	public static void lockeydog(int number) {
		 int[] person = new int[number] ;
		 int  i = 0;
		 boolean flag = true;//判断奇、偶数的标志
		 int out_nmber = 0;//已出局人数	 
		 while(true) {
			 if(person[i] == 0) {  //判断此人是否还在。(一开始数组元素全部为0,当此人出局时,会被赋为1)
				 if(out_nmber == (number-1)) //判断是否还剩最后一个人
					 break;
				 flag = !flag;		 
				 if(flag) { //判断是否出局。(true表示每轮的偶数号的人,false表示每轮的奇数号的人,如果为偶数号的人就出局)
					 person[i] = 1 ;//赋为1,表示出局
					 out_nmber++;//出局人数加1
				 }
			 }
				 i++;
				 i%=number;//走到最后一个人时,i变为0 ,循环下一轮
		 }
		 System.out.printf("应该站在位置:%d\n", i + 1);
	}
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值