方法练习
题1
游戏:逢7过 规则:从任意一个数字开始报数,当你要报的数字包含7或者是7的倍数时都要说过。输入一个数,判断是不是逢7过的数。
int tempNumber=number; //定义一个临时变量,以便后面用的时候不改变原数据
while(true)
{
int ge=tempNumber%10; //取到数字的个位
if(ge==7 || number%7==0) //判断个位包含7或者这个数是7的倍数
{
System.out.println(number+" 是逢7必过数");
break;
}
else
{
//如果不是7的倍数,并且个位不是7,那么就减少一位,继续判断前面一位
tempNumber=tempNumber/10;
}
//如果该数的每一位都判断完了,没有一位是7,那么输出该数不是,且跳出循环
if(tempNumber==0)
{
System.out.println(number+" 不是逢7必过数");
break;
}
}
题2
有一个数组,求出该数组中满足要求的元素和,
要求是:求和的元素个位和十位都不能是7,并且只能是偶数
int sum=0;
for (int i = 0; i < arr.length; i++){
//判断是偶数,并且个位十位都不是7
if(arr[i]%2==0 && arr[i]%10!=7 && arr[i]/10%10!=7){
sum=sum+arr[i];
}
}
题3
数组元素反转:将数组中所有的元素逆制
//定义start表示数组第一个元素的下标
//定义end表示数组最后一个元素下标
使用while循环,当数组首尾的数字交换后,start++,end--,即要交换的数字下标往中间移动一格,如果start==end,表示数组元素为单个,最后换到了最中间一个,此时不用再次交换,循环结束。如果start>end,表示数组最中间两个数字交换之后,此时数组交换完了,那么如果再次交换,那么就是将已经交换过的再换回来,所以此时对要求来说是错误操作,那么循环结束。
int start=0; //第一个元素下标
int end=arr.length-1; //最后一个元素下标
/*如果数组元素为奇数个,那么最后start和end都是最中间的那个元素下标
如果数组元素为偶数个,那么start和end是最中间那两个元素的下标,若再次start++,end--
那么就是将最中间两个已经交换的数再交换回来(此时start>end了)*/
while (start<end)
{
int temp=arr[start]; //定义一个临时变量,用来作为交换两数的介质
arr[start]=arr[end];
arr[end]=temp;
start++; //交换完后开始下标往后走
end--; //末尾下标往前走
}
题4
评委打分
需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值 (不考虑小数部分)
1、建立一个长度为6的数组用来存储6位评委打的分数
2、定义一个方法,用来将六位评委的分数依次存入数组中
public static void getScore(int[] arr)
{
int time=arr.length; //time=6
while(time>0)
{
System.out.print("第"+(arr.length-time+1)+"位评委打分:");
int score=scanner.nextInt();
if(score<=100 && score>=0)
{
arr[arr.length-time]=score;
time--;
}
else
{
System.out.println("您输入的分数不合法!请重新输入:");
}
}
}
3、定义一个方法,返回数组中的最大值
public static int getMax(int[] arr)
{
int max=0;
for (int i=0;i<arr.length;i++)
{
if(arr[i]>max)
{
max=arr[i];
}
}
return max;
}
4、定义一个方法,返回数组中的最小值
public static int getMin(int[] arr)
{
int min=arr[0];
for (int i = 0; i < arr.length; i++)
{
if(arr[i]<min)
{
min=arr[i];
}
}
return min;
}
5、定义一个方法,用来计算数组中六位评委的总分,然后减去最高分和最低分,然后再除4,得到平均分
public static void getAverage(int[] arr,int max,int min)
{
int sum=0; //定义数组的总和
int average; //定义四个评委的平均分
for (int i = 0; i < arr.length; i++) //求数组的总和
{
sum+=arr[i];
}
average=(sum-max-min)/4;
System.out.println("选手的平均分为:"+average);
}
6、再主方法中调用这些方法