数组的创建:
创建一个长度为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];
}
}