任务1:
写两个方法,其中一个方法可以把某个整数插入到整型数组的特定位置,数组中原有元素向后移动;另一个方法能够从整形数组中特定位置删除掉一个元素,数组中原有元素向前移动
public class InsertDeleteArray {
static int[] arrayCopy;//保存原有数据
/**
* @param array 原数组
* @param index 插入下标
* @return
*/
public static int [] insertArry(int[] array,int index,int value){
arrayCopy = new int[array.length+1];
for(int i = 0;i <= array.length;i++){
if(i < index){//如果i小于index,则直接赋值
arrayCopy[i] = array[i];
}else if(i == index){//如果i等于index,将value赋值
arrayCopy[i] = value;
}else{
arrayCopy[i] = array[i-1];//将原数组下标-1赋值给新数组
}
}
array = arrayCopy;
return array;
}
/**
* @param array 原数组
* @param index 删除下标
* @return
*/
public static int [] deleteArry(int[] array,int index){
arrayCopy = new int[array.length-1];
for(int i = 0;i < array.length;i++){
if(i < index){//如果i小于index,则直接赋值
arrayCopy[i] = array[i];
}else{//如果i大于等于index,则将原数组赋值给现有数组下标-1
arrayCopy[i-1] = array[i];
}
}
array = arrayCopy;
return array;
}
/**
* @param array
* 打印数组
*/
public static void printArray(int[] array){
for(int i = 0;i < array.length;i++){
System.out.print(array[i]+" ");
}
System.out.println();
}
/**
* @param args
*/
public static void main(String[] args) {
int[] array = new int[]{1,5,6,8,9,7,3,2};
//int[] arrayCopy ;
int index = 5;
int value = 0;
System.out.println("原始数据");
printArray(array);
arrayCopy = insertArry(array,index,value);
System.out.printf("在指定位置%d插入%d\n",index,value);
printArray(arrayCopy);
System.out.printf("在指定位置%d删除\n",index);
arrayCopy = deleteArry(array,index);
printArray(arrayCopy);
}
}
任务2
有偶数支足球队进行单循环比赛,请按照指定算法打印每轮的对阵形势.比如:有如下球队:china,England,Germany,Italy,France,Agentia.
第一轮:
China-----Agentina
England-----France
Germany-----Italy
…
/**
* @author
* @version 1.0
* @date 2015年7月24日
* 第一轮 第二轮 第三轮 第四轮 第五轮
*
* 1-6 1-5 1-4 1-3 1-2
* 2-5 6-4 5-3 4-2 3-6
* 3-4 2-3 6-2 5-6 4-5
*
*/
public class SingleCycleRace {
static int[] index = new int[]{0,1,2,3,4,5};
/**
* @param country
* 打印赛事
*/
public static void printRace(String[] country){
int count = country.length - 1;
for(int j = 0;j < count;j++){//共有count轮比赛
System.out.println("第"+(j+1)+"比赛对阵:");//每轮有count/2对阵
for(int i = 0;i <= count/2;i++){
//System.out.print(country[index[i]]+"---"+country[index[count-i]]+" "+index[i]+"---"+index[count-i]);
System.out.print(country[index[i]]+"---"+country[index[count-i]]+" ");//打印对阵结果
}
System.out.println();
change(index);
//printfIndex(index);
}
}
/**
* @param index
* 修改下标
*/
public static void change(int[] index){
int end = index[index.length-1];
int temp = 0;
for(int i = index.length -1;i >= 1;i--){
index[i] = index[i-1];
}
index[1] = end;
}
/**
* @param index
* 打印下标变化
*/
public static void printfIndex(int[] index){
for(int i = 0;i < index.length;i++){
System.out.print(" "+index[i]);
}
System.out.println();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] country = new String[]{
"china","England","Germany","Italy","France","Agentia"
};
printRace(country);
}
}
任务3:
验证数学黑洞 用户输入一个四位数,输出变换到6174的过程
例如:1234: 4321-1234=3087
8730-0378=8352
8532-2358=6174
/**
* @author WL-PC
* @version 1.0
* @date 2015年7月25日
*
* 验证数学黑洞 用户输入一个四位数,输出变换到6174的过程
*
* 原理是将原数可能得到各个位组成的最大值和最小值之差
*/
public class MathematicalBlackHole {
static int[] numberByte = new int[4];
// /**
// * @param number
// * @return
// * 将输入的数逆序
// */
// public static int reverse(int number){
// int reverse = 0;
// int count = 1;
// while(number != 0){
// reverse = reverse+(number%10)*(1000/count);
// number = number/10;
// count = count*10;
// }
// return reverse;
// }
/**
* @param number
* 将传入的数各个位排序
*/
public static void sortByte(int number){
int count = 0;
while(number != 0){
numberByte[count] = number%10;
number = number/10;
count++;
}
Arrays.sort(numberByte);
//printf(numberByte);
// System.out.println("===="+maxNumber(numberByte));
//
// System.out.println("===="+minNumber(numberByte));
}
// /**
// * @param numberByte
// * 打印数组
// */
// public static void printf(int[] numberByte){
// for(int i = 0;i < numberByte.length;i++){
// System.out.print(numberByte[i]);
// }
// }
/**
* @param number
* @return
* 数组组成最大值
*/
public static int maxNumber(int[] number){
int max = 0;
int count = 1;
for(int i = number.length-1; i >= 0;i--){
max = max + number[i]*(1000/count);
count = count*10;
}
return max;
}
public static int minNumber(int[] number){
int min = 0;
int count = 1;
for(int i = 0; i < number.length;i++){
min = min + number[i]*(1000/count);
count = count*10;
}
return min;
}
/**
* @param number 接受输入的数
*/
public static void matathematicalBlackHole(int number){
int poor = 0;
int max = 0;
int min = 0;
if(number == 6174){
return;
}else{
sortByte(number);
max = maxNumber(numberByte);
min = minNumber(numberByte);
poor = max - min;
System.out.println(max+"-"+min+"="+poor);
matathematicalBlackHole(poor);
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int number = 1000;
System.out.println("请输入一个四位数");
Scanner scanner = new Scanner(System.in);
number = scanner.nextInt();
matathematicalBlackHole(number);
//System.out.println(reverse(number));
//sortByte(number);
}
}
任务4 将学员成绩按升序排序
/**
* @author WL-PC
* @version 1.0
* @date 2015年7月25日
*
* 验证数学黑洞 用户输入一个四位数,输出变换到6174的过程
*
* 原理是将原数可能得到各个位组成的最大值和最小值之差
*/
public class MathematicalBlackHole {
static int[] numberByte = new int[4];
// /**
// * @param number
// * @return
// * 将输入的数逆序
// */
// public static int reverse(int number){
// int reverse = 0;
// int count = 1;
// while(number != 0){
// reverse = reverse+(number%10)*(1000/count);
// number = number/10;
// count = count*10;
// }
// return reverse;
// }
/**
* @param number
* 将传入的数各个位排序
*/
public static void sortByte(int number){
int count = 0;
while(number != 0){
numberByte[count] = number%10;
number = number/10;
count++;
}
Arrays.sort(numberByte);
//printf(numberByte);
// System.out.println("===="+maxNumber(numberByte));
//
// System.out.println("===="+minNumber(numberByte));
}
// /**
// * @param numberByte
// * 打印数组
// */
// public static void printf(int[] numberByte){
// for(int i = 0;i < numberByte.length;i++){
// System.out.print(numberByte[i]);
// }
// }
/**
* @param number
* @return
* 数组组成最大值
*/
public static int maxNumber(int[] number){
int max = 0;
int count = 1;
for(int i = number.length-1; i >= 0;i--){
max = max + number[i]*(1000/count);
count = count*10;
}
return max;
}
public static int minNumber(int[] number){
int min = 0;
int count = 1;
for(int i = 0; i < number.length;i++){
min = min + number[i]*(1000/count);
count = count*10;
}
return min;
}
/**
* @param number 接受输入的数
*/
public static void matathematicalBlackHole(int number){
int poor = 0;
int max = 0;
int min = 0;
if(number == 6174){
return;
}else{
sortByte(number);
max = maxNumber(numberByte);
min = minNumber(numberByte);
poor = max - min;
System.out.println(max+"-"+min+"="+poor);
matathematicalBlackHole(poor);
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int number = 1000;
System.out.println("请输入一个四位数");
Scanner scanner = new Scanner(System.in);
number = scanner.nextInt();
matathematicalBlackHole(number);
//System.out.println(reverse(number));
//sortByte(number);
}
}
任务5: 实现最高成绩的输出
public class MaxScore {
/**
* @param scores 成绩记录
* @return 返回最大值 int
*/
public static int maxScore(int[] scores){
int max = 0;
for(int i = 0;i < scores.length;i++){
if(scores[i] > max){
max = scores[i];
}
}
return max;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] scores = new int[5];//保存学员输入的成绩
Scanner scanner = new Scanner(System.in);//扫描器
int max = 0;//最大值
System.out.println("请输入5位学员的成绩");
for(int i = 0;i < scores.length;i++){
scores[i] = scanner.nextInt();
}
max = maxScore(scores);
System.out.println("考试成绩最高分为:"+max);
}
}
任务6:原始数组为:1,3,-1,5,-2,逆序输出原数组,并将小于0的元素按0存储。
public class ReceverArray {
static int[] data = new int[]{1,3,-1,5,-2};
/**
* @param data 要逆转的数组
* @return 逆转后的数组
*/
public static int[] receverArray(int[] data){
int temp = 0;
for(int i = 0;i < data.length/2;i++){
temp = data[i];
data[i] = data[data.length-i-1];
data[data.length-i-1] = temp;
}
return data;
}
/**
* @param data 转化的数组
* @return 转化后的数组
*/
public static int[] zeroArray(int[] data){
for(int i = 0;i < data.length;i++){
if(data[i] < 0){
data[i] = 0;
}
}
return data;
}
/**
* @param data 要打印的数组
*/
public static void printArray(int[] data){
for(int i = data.length-1;i >= 0;i--){
System.out.print(data[i]+" ");
}
}
/**
* @param args
*/
public static void main(String[] args) {
int[] datas = new int[5];
System.out.print("原数据:");
printArray(data);
System.out.print("\n逆转以后:");
datas = receverArray(data);
printArray(datas);
System.out.print("\n将负值变为0:");
datas = zeroArray(data);
printArray(datas);
}
}