lesson12Homework
package StringPractice;
public class arrayTest {
//1. 把A数组的前5个元素复制到B数组中。
public static void main(String[] args) {
int arrA[]={1,2,3,4,5,6};
int arrB[]=new int[5];
for(int i=0;i<5;i++){
arrB[i]=arrA[i];//把前五位赋值给数组arrB
}
for(int i=0;i<arrA.length;i++){
System.out.println("arrA["+i+"]="+arrA[i]);
}
for(int i=0;i<arrB.length;i++){
System.out.println("arrB["+i+"]="+arrB[i]);
}
}
}
/**
* 2. 有一个长度是10的数组,数组内有10个不重复的数字,要求按从大到小排序。
* @param args
*/
package StringPractice;
import java.util.Random;
public class Array02 {
public static void main(String[] args) {
int arr[]=new int[10];
Random rand=new Random();
for(int i=0;i<arr.length;i++){
arr[i]=rand.nextInt(100);//在0到100的数中随机进行对数组赋值
System.out.print(arr[i]+" ");
}
System.out.println();
//使用冒泡法进行对数组的值进行从小到大进行排序
for(int i=arr.length;i>0;i--){
for(int j=0;j<i-1;j++){
if (arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
}
/**
* 3. 有一个长度是10的数组,要求删除某一个位置的元素,后边元素前置。
*/
package StringPractice;
import java.util.Scanner;
public class Array03 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入您要删除的元素的位置:");
int a=scanner.nextInt();
int []arr=new int[]{1,2,3,4,5,6,7,89,0,7};
for(int i=a-1;i<arr.length-1;i++){
arr[i]=arr[i+1];//把后一个元素的值赋给前一个
}
arr[9]=0;
for(int i=0;i<9;i++){
System.out.print(arr[i]+" ");
}
}
}
package StringPractice;
/**
* 4. 有一个长度是10的数组,按递增排列,用户输入一个数,插入适当位置。
* @author liyinxia
*
*/
import java.util.Scanner;
public class Array04 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int []arr=new int[]{2,1,2,7,5,9,6,7,89,3,7};
int len=arr.length;
int []arr1=new int[len+1];
Scanner scanner=new Scanner(System.in);
System.out.println("请您输入一个数:");
int insert=scanner.nextInt();
//冒泡排序
for(int i=arr.length;i>0;i--){
for(int j=0;j<i-1;j++){
if (arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
/**
* 进行插入操作
*/
for (int i=0;i<len;i++){
if(arr[i]<=insert){
continue;}
else{
for(int j=0;j<=i;j++){
arr1[j]=arr[j];
}
arr[i]=insert;
for(int k=i+1;k<len+1;k++,i++){
arr1[k]=arr[i];
}
}
}
for(int j=0;j<len+1;j++){
System.out.print(arr1[j]+" ");
}
}
}
//5. 有一个长度是10的数组,数组内有10个数字,要求去掉重复的
package ArrayPractice;
import java.util.Arrays;
import java.util.Random;
public class OneArray_5 {
public static int[] trim(int array[]){
int len=array.length; //获得传入数组的长度
int brray[]=new int[len]; //声明一个数组,长度为传入数组的长度
int newlen=len;
for(int i=0;i<len;i++){ //初始化brray
brray[i]=0;
}
for(int j=1;j<len;j++){
if(array[j]==array[j-1]){ //记录重复的值
brray[j]=1;
newlen--;
}
}
int newarray[]=new int[newlen];//声明一个数组,长度为除去重复数字的个数
int newId=0;
for(int k=0;k<len;k++){
if(brray[k]==0){
newarray[newId++]=array[k];
}
}
return newarray;//返回的是一个数组
}
public static void main(String[] args){
Random rd=new Random();
int[]array=new int[10];
for(int i=0;i<array.length;i++){
array[i]=rd.nextInt(20);
System.out.print(array[i]+" ");
/*if((i+1)%5==0){
System.out.println();
}*/
}
Arrays.sort(array);
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
/*if((i+1)%5==0){
System.out.println();
}*/
}
int c[]=trim(array);
System.out.println("去除重复数字后的结果:");
for(int i=0;i<c.length;i++){
System.out.print(array[i]+" ");
/*if((i+1)%5==0){
System.out.println();
}*/
}
}
}
//6. 把A数组的第三到第六位之间的元素删除。
package ArrayPractice;
public class Array06 {
public static int[] trim(int array[]){
int len=array.length;
int brray[]=new int[len];
for(int i=0;i<len;i++){
brray[i]=0;
}
int newlen=len;
for(int j=0;j<len;j++){
if(j>=2&&j<=5){
brray[j]=1;
newlen--;
}
}
int newId=0;
int newArray[]=new int[newlen];
for(int k=0;k<len;k++){
if(brray[k]==0){
newArray[newId++]=array[k];
}
}
return newArray;
}
public static void main(String[] args){
int []arr=new int[]{1,2,3,4,5,6,7,89,0,7};
int c[]=trim(arr);
for(int i=0;i<c.length;i++){
System.out.print(c[i]+" ");
}
}
}
/**
* 7. 已知A数组,B数组,定义一个数组C,要求C包含A,B数组中的数据(无重复值)。
*/
package StringPractice;
import java.util.Arrays;
import java.util.Random;
import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader.Array;
public class OneArray_07 {
/**
* 将两个数组合并到一个数组中
* @param a
* @param b
* @return
*/
public static int[] combineArray(int a[],int b[]){
int a1=a.length;
int b1=b.length;
int length=a1+b1;
int i,j;
System.out.println("a数组的元素如下");
for( i=0;i<a1;i++){
System.out.print(a[i]+" ");
}
System.out.println();
System.out.println("b数组的元素如下");
for( i=0;i<b1;i++){
System.out.print(b[i]+" ");
}
int newarray[]=new int[length];
for(i=0,j=0;i<a1&&j<b1;){
if(a[i]<b[j]){
newarray[i+j]=a[i];
i++;
}
else{
newarray[i+j]=b[j];
j++;
}
if(i==a1){
System.arraycopy(b,j,newarray,a1+j,b1-j);//把b数组中的从下标为j开始,存放在newarray数组中,下标的变化
} //是从a1+j延续b1-j个数字
if(j==b1){
System.arraycopy(a,i,newarray,b1+i,a1-i);
}
}
return newarray;
}
/**
* 去除重复的数字
* @param array
* @return
*/
public static int[] trim(int array[]){
int len=array.length; //获得传入数组的长度
int brray[]=new int[len]; //声明一个数组,长度为传入数组的长度
int newlen=len;
for(int i=0;i<len;i++){ //初始化brray
brray[i]=0;
}
for(int j=1;j<len;j++){
if(array[j]==array[j-1]){ //记录重复的值
brray[j]=1;
newlen--;
}
}
int newarray[]=new int[newlen];//声明一个数组,长度为除去重复数字的个数
int newId=0;
for(int k=0;k<len;k++){
if(brray[k]==0){
newarray[newId++]=array[k];
}
}
return newarray;//返回的是一个数组
}
//主函数
public static void main(String[] args){
Random rd=new Random();
int arr1[] =new int[10];
int arr2[]=new int[10];
//对数组进行随机赋值
for(int i=0;i<arr1.length;i++){
arr1[i]=rd.nextInt(20);
}
for(int i=0;i<arr2.length;i++){
arr2[i]=rd.nextInt(20);
}
/*//先对arr1和arr2数组进行排序
Arrays.sort(arr1);
Arrays.sort(arr2);*/
//调用combineArray方法
int newarr3[]=combineArray(arr1,arr2);
System.out.println();
System.out.println("输出合并后未排序的数组值:");
for(int i=0;i<newarr3.length;i++){
System.out.print(newarr3[i]+" ");
}
System.out.println();
Arrays.sort(newarr3);
System.out.println("输出合并后排序的数组值:");
for(int i=0;i<newarr3.length;i++){
System.out.print(newarr3[i]+" ");
}
System.out.println();
//调用trim方法,去除重复数字
int newarr4[]=trim(newarr3);
System.out.println("输出最后的结果,合并后从小到大排列,且无重复数字:");
for (int i=0;i<newarr4.length;i++){
System.out.print(newarr4[i]+" ");
}
}
}
package StringPractice;
public class Array08 {
public static int DiagonalAdd(int array[][]){
int len=array.length;
int diagonal1=0;
int diagonal2=0;
int sum;
/**
* 将两条对角线进行相加
*/
for(int i=0;i<len;i++){
diagonal1+=array[i][i];
diagonal2+=array[len-i-1][i];
}
if(len%2==0){
sum=diagonal1+diagonal2;//判断没有相交,直接相加
}
else{
sum=diagonal1+diagonal2-array[len/2][len/2];//判断有相交的值,需要减去相交的值
}
return sum;
}
public static void main(String[]args){
int arr[][]=new int[6][6];
int a=0;
System.out.println("输出数组中的值:");
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
arr[i][j]=a;
a++;
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
//调用DiagonalAdd方法
int sum=DiagonalAdd(arr);
System.out.println("对角线的和是:"+sum);
}
}
/**
* 9. 判断一个数组是否对称
*/
package StringPractice;
public class Array09 {
//将矩阵转置
public static int[][] Transposition(int array[][]){
int len=array.length;
int brray[][]=new int[len][len];
for(int i=0;i<len;i++){
for(int j=0;j<len;j++){
brray[j][i]=array[i][j];
}
}
return brray;
}
//主方法
public static void main(String[]args){
int array[][]=new int[][]{{1,2},{2,1}};
int brray[][]=Transposition(array);
int i,j;
boolean boo=true;
for( i=0;i<array.length;i++){
for( j=0;j<array[i].length;j++){
if(array[i][j]!=brray[i][j]){
boo=false;
break;
}
}
}
if(boo){
System.out.println("这个数组是对称的!!");
}
else{
System.out.println("这个数组不是对称的!!");
}
}
}