import java.util.Scanner;
public class Example2_5_4 {
public static void main(String args[ ]) {
int[] a= new int[10];
System.out.print("输入10个以内整数型数据(0结束):");
Scanner scanner = new Scanner(System.in);
int b = scanner.nextInt();
for(int i = 0;i<10&&(b!=0);i++){
a[i]=b;
b = scanner.nextInt();
}
/*
TODO:判断数组的长度
提示:int型数组初始化时,默认值为0
判断a[i]是0,输出长度i,如果直到i=9没有元素为0,直接输出a.length
打印语句:System.out.println("数组的长度是:"+i);
*/
for (int i = 0;i<a.length;i++ ) {
if(a[i]==0){
System.out.println("数组的长度是"+i);
break;
}else if(i==9){
System.out.println(a.length);
break;
}
}
}
}
二、对输入的5个数升序排序后输出
import java.util.Arrays;
import java.util.Scanner;
public class Example4_11 {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("输入5个数:");
int[] a={0,0,0,0,0};
for(int i=0;i<5;i++){
a[i]=sc.nextInt();
}
/*
TODO:引入类库Arrays,调用其sort方法排序
通过循环将数组中的值依次输出。
提示:输出的每个数组元素之间用两个空格隔开
参数说明:a[i]数组
*/
Arrays.sort(a);
for (int i : a){
System.out.print(i+" ");
}
}
}
三、数组元素逆置
import java.io.*;
import java.util.*;
public class Main {
public static void main(String args[]) {
//TODO:定义一个大小为10的整型数组,并通过键盘输入10个整数(用空格分隔)
int[] a = new int[10];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < a.length; i++) {
a[i] = sc.nextInt();
}
//TODO:将该数组按题目要求逆置
int[] b = new int[a.length];
for (int i = 0,j = a.length-1; i < b.length; i++,j--) {
b[i] = a[j];
}
//TODO:输出该数组各元素的值,要求在同一行输出,各元素间用空格分隔,参见用例描述
a = b;
for (int i:a) {
System.out.print(i+" ");
}
}
}
四、求解Josephus问题
import java.io.*;
import java.util.*;
public class Main {
public static void main(String args[]) {
int n = 0;
int s = 0;
int m = 0;
Scanner cin = new Scanner(System.in);
//输入人数n,报数起始位置s,报数数目m
while (cin.hasNext()) {
n = cin.nextInt();
s = cin.nextInt();
m = cin.nextInt();
}
//定义一个数组存储这n个人,给每人设置编号,编号从1开始
int[] josephus = new int[n];
for(int i = 0; i < n; i++){
josephus[i] = i+1;
}
//TODO:求解该Josephus问题,输出出列序列(空格分隔)
if (s >= 1 && s <= n) {
s = s - 1;
while (josephus.length != 0) {
//更新数字
n = josephus.length;
s = (s + m - 1) % n;
//找到目标元素并打印
System.out.print(josephus[s]);
System.out.print(' ');
//目标出列
josephus[s] = 0;
//数组数字前进
for (int i = s; i < josephus.length - 1; i++) {
int temp = josephus[i];
josephus[i] = josephus[i + 1];
josephus[i + 1] = temp;
}
//把josephus数组赋值给arr并缩短数组
int[] arr = new int[josephus.length - 1];
for (int i = 0; i < arr.length; i++) {
arr[i] = josephus[i];
}
josephus = arr;
}
}
}
}