数组的示例 二
示例一
定义一个长度为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
利用Java的Math类的random()方法,编写函数得到0到n之间的随机数,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
题目:输入某年某月某日,判断这一天是这一年的第几天?
分析:以3月5日为例,应该先把前两个月的加起来,然后再加上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+"天");
}
}