数组的示例 二

示例一

 定义一个长度为10 的一维字符串数组,在每一个元素存放一个单词;然后运行时从命令行输入一个单词,程序判断数组是否包含有这个单词,包含这个单词就打印出“Yes”,不包含就打印出“No”。

public class Test{

public static void main(String []args){

String []arr ={"java","html","sql","androld","javascript","ruby","c","ruly",“net”,"ios"};//定义一个数组并赋值

Scanner input =new Scanner(System.in);//获取用户输入

System.out.println("请输入要查找的语言");

String scanner=input.next();

boolean flag =false;//判断是否输入对应

for(Sting string:scanner){//for增强循环

if(string.equals(scanner)){//比较数组中是否有用户输入

flag=true;

}

}

if(flag){

System.out.println("YES");

}else{

System.out.println("NO");

}

}

}

 

 

示例2

 

利用JavaMath类的random()方法,编写函数得到0n之间的随机数,n是参数。
提示: int num=(int)(n*Math.random());
并找出产生50个这样的随机数中最大的、最小的数,并统计其中大于等于60的有多少个。

public class Test{

public static void maxin(String[] args){

//创建一个长度为50的数组,每个元素在0~100之间

int []arr=getArray(100);

//遍历数组

Arr(arr);

//获取最大值最小值

int max=getMax(arr);

int min=getMin(arr);

System.out.println("最大值"+max+"最小值"+min);

int count=count(arr,60);

System.out.println("大于等于60的个数"+count);

}

//遍历数组

public static void Arr(int [] arr){

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

if(i%10==0){//十个数为一行

System.out.println();

}

System.out.println(arr[i]+"\t");

}

}

//获取数组中最大值

public static int getMax(int[]arr){

int max=arr[0];//假设第一个为最大值

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

if(max<arr[i]){.//如果当前元素比最大元素还大

max=arr[i];//把当前元素赋值给max

}

}

return max;//输出max

}

//获取数组中最小值

public static int getMin(int[] arr){

int min=arr[0];//假设第一个为最小值

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

if(min>arr[i]){//如果当前元素比min还小

min=arr[i];//把当前元素赋给min

}

}

return min;

 

}

//创建数组 并且初始化50个值

public static int [] getArray(int n){

ing []arr=new int[50];//创建数组 并且开辟50个空间

for(int i=0;i<50;i++){

arr[i]=(int)(Math.random());//获得50个随机数 int 类型

}

return arr;

}

//统计数组中大于等于60的数量

public static int count(int [] arr,int elem){

int count=0;

for(int i:arr){

if(i>=elem){

count++;

}

}

return count;

}

}

 

示例3

 

数组逆序操作:定义长度为10的数组,将数组元素对调,并输出对调前后的结果。

 

public class Test{

public static void main(String [] args){

int[] arr={21,36,35,14,35,25,16};//定义一个数组并进行静态初始化

//逆序前

System.out.println("逆序前");

printArr(arr);

System.out.println("逆序后");

reverseArr(arr);

printArr(arr);

 

 

}

public static void reversrArr(int[] arr){

for(int x=0;x<arr.length/2;x++){//二分查询

int temp=arr[x];

arr[x]=arr[arr.length-1-x];

arr[arr.length-1-x]=temp;

}

}

//遍历数组

public static void printArr(int[] arr){

System.out.print("[");

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

if(i==arr.length-1){

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

}else {

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

 

}

}

 

}

 

}

 

示例4

 

现在有如下的一个数组:   int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}   要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为: int newArr [] ={1,3,4,5,6,6,5,4,7,6,7,5}  

 

思路: 确定出不为0的个数,这样可以开辟新数组;从旧的数组之中,取出内容,并将其赋给新开辟的数组。

 

 

public class Test{

public static void main(String[]args){

int oldArr[]={1,3,5,0,0,6,6,0,5,4,7,6,7,0,5};

int newArr[]=selectArr(oldArr);

for(int i:newArr){

System.out.println(i+"");

}

}

//去掉数组中值为0的元素方法

public static int[] selsectArr(int[] arr){

//计算数组中元素不为0的个数

int count=0;

for(int i:arr){

if(i!=0){

count++;

}

}

//创建一个新数组,长度为count

int newArr[]=new int[count];

int size=0;

for(int i:arr){

if(i!=0){

newArr[size++]=i;

}

}

return newArr;

}

}

 

 

示例5

 

使用二分法查找有序数组中元素。找到返回索引,不存在输出-1

 

public class Test{

public static void main(String[] args){

int [] array={1,2,3,4,5,6,7,8,9,10};

System.out.println(array,9);

}

 

/**

 

 * 循环二分查找,返回第一次出现该值的位置 

 

 * @param array 已排序的数组

 

 * @param findValue   需要找的值

 

 * @return 值在数组中的位置,从0开始。找不到返回-1

 

 */

 

public static int sear(int[] array,int Value){

 

// 如果数组为空,直接返回-1,即查找失败

 

if(array=null){

return -1;

}

//起始位置

int start=0;

//结束为止

int end =arrar.length-1;

while(start<=end){

//中间位置

int middle=(start+end)/2;

//中值

int middleValue=array[middle];

if(Value==middleValue){

//等于中值直接返回

return middle;

}else if(Value<middleValue){

//小于中值在中值前面找

end=middle-1;

}else{

//大于中值在中值后面找

start=middle+1;

}

}

return -1;//查找失败

}

}

 

 

示例6

 

用二重循环求出二维数组b所有元素的和:

int[][]b={{11},{21,22},{31,32,33}};

public static void main(String [] args){

int sum=0;

int[][]b={{11},{21,22},{31,32,33}};

for(int i=0;i<b.length;i++){

for(int j=0;j<b[i].length;j++){

sum+=b[i][j];

}

}

System.out.println(sum);

}

 

 

 

示例7

 

生成一百个随机数,放入数组,然后排序输出。

public class Test{

public static void main(String[]args){

//生成100随机数

int []arr=createArr();

//从小到大排序

arr=sortArr[arr];

//打印

prinArr(arr);

}

//生成100随机数

public static int[] caeateArr(){

int [] arr=new int[100];

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

arr[i]=(int)(Math.pandom());

}

return arr;

}

//对数组进行排序的方法

publc static int [] sortArr(int[] arr){

int temp;

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

for(int j=0;j<=i;j++){

if(arr[i]<arr[j]){

temp=arr[i];

arr[i]=arr[j];

arr[j]=temp

}

}

}

return arr;

}

//遍历数组打印

public static void prinArr(int[]arr){

for(int i:arr){

System.out.println(i);

}

}

}

 

 

 

示例8

 

 题目:输入某年某月某日,判断这一天是这一年的第几天?

 

分析:以35日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。可以定义数组存储1-12月各个月的天数。

 

public class Test{

public static void main(String []args){

Scanner scanner =new Scanner(System.in);

System.out.print("第几年");

int year=scanner.nextInt();

System.out.print("第几月");

int month=scanner.nextInt();

System.out.print("第几日");

int dat=scanner.nextInt();

int daynum=0;//天数

//一年365天

int[] month1=new int[]{31,28,31,30,31,30,31,31,30,31,30,31};

//366闰年

if(year%400==0&&year%100!0&&year%4==0){

month1=new nt[]{31,2931,30,31,30,31,31,30,31,30,31};

}

//判断这一天是第几天

for(int index=1;index<=month;index++){

if(index==1){

daynum=day;

}else(

daynum+=month1[index-2];

}

}

System.out.println("这一天是这一年"+daynum+"天");

}

}

 

posted @ 2017-04-09 16:00  代鱼  阅读(1236)  评论(0编辑  收藏  举报