Java 数组的几个例子

数组的创建
创建一个长度为50的数组;

int[] arr=new int[50];
//类型[] 数组名=new 类型[长度];

创建一个长度为4的数组;

int[] arr={1,2,3,4};
//类型[] 数组名={数组成员,数组成员,数组成员};

上菜:
1.第五套人民币的主币(不包括角、分)共有以下6种面值纸币:1元,5元,10元,20元,50元,100元。自定义方法CalculateMoney,计算要用这几种纸币组成金额“X”,最少需要多少纸币。

package ceshi;

import java.util.*;
import java.util.regex.*;

public class Ceshi {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		int[] arr = new int[7];
		System.out.println("请输入金钱");
		String st = sc.nextLine();

		if (isInteger(st)) {
			int a = Integer.parseInt(st);
			arr = Calculatemoney(a);
			for (int i = 6; i >= 0; i--) {
				switch (i) {
				case 6:
					System.out.println("100元需要:");
					break;
				case 5:
					System.out.println("50元需要:");
					break;
				case 4:
					System.out.println("20元需要:");
					break;
				case 3:
					System.out.println("10元需要:");
					break;
				case 2:
					System.out.println("5元需要:");
					break;
				case 1:
					System.out.println("2元需要:");
					break;
				case 0:
					System.out.println("1元需要:");
					break;

				}
				System.out.println(arr[i] + "张");

			}

		} else {
			System.out.println("请输入整数");
		}

	}

	private static int[] Calculatemoney(int a) {
		int temp;

		int[] bb = { 0, 0, 0, 0, 0, 0, 0 };
		temp = a;
		while (temp >= 100) {
			bb[6] += 1;

			temp -= 100;
		}
		while (temp >= 50) {
			bb[5] += 1;
			temp -= 50;
		}
		while (temp >= 20) {
			bb[4] += 1;
			temp -= 20;
		}
		while (temp >= 10) {
			bb[3] += 1;
			temp -= 10;
		}
		while (temp >= 5) {
			bb[2] += 1;
			temp -= 5;
		}
		while (temp >= 2) {
			bb[1] += 1;
			temp -= 2;
		}
		while (temp >= 1) {
			bb[0] += 1;
			temp -= 1;
		}

		return bb;

	}

	public static boolean isInteger(String str) {
		Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
		return pattern.matcher(str).matches();
	}
}

思路如下:
用数组来储存最少需要的张数;
对应的有1,2,5,10,20,50,100;
所以数组长度为7;
关键代码: while (temp >= 100) {bb[6] += 1;temp -= 100;}
另一种写法:

package priv.wangbiao.work3;

import java.util.Scanner;

public class One {
	

	public static void main(String[] args) {
		CalculateMoney();
		
		
	}

	private static void CalculateMoney() {
		int[] mainE = {100,50,20,10,5,1};
		Scanner scanner = new Scanner(System.in);
		int je = scanner.nextInt();//2435
		int r=0;
		
		for (int i = 0; i < mainE.length; i++) {
			
			r+=je/mainE[i];
			
			je%=mainE[i];
		}
		System.out.printf(r);
	}
}

2:有一个数组的长度为10,请为此数组中每一个位置赋一个在0到99之间的随机数。并把此数组中的最大值输出来。

package ceshi;

public class demo {
	public static void main(String[] args) {
		int[] arr = new int[10];
		for (int i = 0; i < 10; i++) {
			arr[i] = (int) (Math.random() * 90) ;//随机数的生成
		}
		for (int i = 0; i < 10; i++) {
			System.out.println(arr[i]);

		}
		System.out.println("MAx");
		Max(arr);
	}

	private static void Max(int arr[]) {
		int a = 0;
		int temp;
		for (int i = 0; i < 9; i++) {
			if (arr[i] > arr[i + 1]) {
				a = arr[i];
				arr[i] = arr[i + 1];
				arr[i + 1] = a;
			}

		}
		a = arr[9];
		System.out.println(a);
	}
}

随机数x~y的生成:
for (int i = 0; i < 10; i++) {
arr[i] = (int) ((Math.random() * (y-x)) + x);}

3:随机生成50个数字(整数),每个数字的范围是[10,50]统计每个数字出现的次数以及出现次数最多的数字与它的个数,最后将每个数字及其出现次数打印出来,如果某个数字出现次数为0,则不要打印它,打印时按按照数字的升序排列。

package ceshi;

public class demo1 {
	public static void main(String[] args) {
		int[] arr = new int[50];
		int[] ab = new int[50];
		int[] dr = new int[50];

		int account = 0;
		for (int i = 0; i < 50; i++) {
			arr[i] = (int) ((Math.random() * 40) + 10);
		}
		ab = order(arr);
		dr = noRepeate(ab);

	}

	private static int[] order(int arr[]) {//冒泡排序
		int a = 0;
		int temp;
		int[] br = new int[50];
		br = arr;
		for (int i = 49; i >= 0; i--) {
			for (int j = 0; j < i; j++) {
				if (br[j] > br[j + 1]) {
					a = br[j];
					br[j] = br[j + 1];
					br[j + 1] = a;
				}
			}

		}
		return br;
	}

	private static int[] noRepeate(int arr[]) {//除掉重复的并且计算重复的个数;
		int[] cr = new int[50];
		int[] hr = new int[50];
		int a = 0;
		int c = 0;

		for (int i = 0; i < 49; i++) {
			if (arr[i] < arr[i + 1]) {
				cr[a] = arr[i];
				hr[a]++;
				a++;
			}
			if (i == 48) {
				cr[a] = arr[i + 1];
			}

		}
		for (int i = 0; i < 49; i++) {
			if (arr[i] == arr[i + 1]) {
				hr[c]++;
			} else {
				c++;
				hr[c] = 1;
			}

		}
		for (int i = 0; i < arr.length; i++)

		{
			System.out.println(arr[i]);
		}
		for (int i = 0; i < arr.length; i++)

		{
			if (cr[i] == 0) {
			} else {
				System.out.println(cr[i] + ":" + "个数" + ":" + hr[i]);
			}
		}
		return cr;
	}
}

效果图如下:
在这里插入图片描述
另一种思路:

package priv.wangbiao.work3;

public class four {

	public static void main(String[] args) {

		int[] arr=new int[41];
		
		for (int i = 0; i < 50; i++) {
			int r=(int) (Math.random()*41+10);//10-50
			arr[r-10]++;//[0,40]
		}
		
		int mix = 0;
		for (int i = 0; i < arr.length; i++) {
			if(arr[i]>arr[mix]) {
				mix=i;
			}
			if(arr[i]!=0) {
				System.out.printf(i+10,arr[i]);
			}
		}
		
		System.out.println(+(mix+10)+arr[mix];
		
	}

}

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值