99乘法表
1,案例:双重for循环打印九九乘法表
package com.baidu.demo;
public class Test {
public static void main(String[] args) {
for (int i = 1; i <=9 ; i++) {
for(int j=1;j<=i;j++){
System.out.print(i+"*"+j+"="+i*j+" ");//不换行
}
System.out.println();//换行
}
}
}
2,结果展示
数字次数
1,需求:定义一个方法,求出给定的数字在给定int类型数组中出现的次数,如果一次读没有就返回0;例如:int [] arr={3 ,5,8,5,2,5},5出现2次。
2,分析:先定义一个count来记录次数。for循环遍历,if判断查找给定数字,相同count就加一,最后返回count。
package com.baidu.demo;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
int [] arr={1,2,5,5,8,8,4,4,2,1,1,1,2,2,9};
System.out.print("请给定一个数字:");
System.out.println("数字出现的次数:"+getIndex(arr));
}
public static int getIndex(int[] arr){
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int count=0;
for(int i=0;i<arr.length;i++)
{
if(arr[i]==a) {
++count;
}
}
return count;
}
}
3,结果展示
回文数字
1,需求:打印5位数中的所有回文数。
2,举例:12321是回文数,个位与万位相同,十位与千位相同。
3,分析:首先我们应该想到水仙花数个,十,百位数字的求法。思想和它的一样,我们应分别求这五位数字,定义五个变量a,b,c,d,e来存放它。然后加个if判断,百位数字比十位大1,十位比个位大1。
package com.baidu.demo;
public class Method {
public static void main(String[] args) {
int a=0,b=0,c=0,d=0,e=0;
for(int i=10000;i<99999;i++)
{
a=i/10000;
b=i/1000%10;
c=i/100%10;
d=i/10%10;
e=i%10;
if(a==e&&b==d&&a+1==b&&b+1==c)
{
System.out.println(i);
}
}
}
}
4,结果展示
数组求和
1, 需求:定义一个int类型的一维数组,内容{77,72,19,16,18,57,12,71,24};求出该数组中满足要求的元素和。
2,要求:求和的元素的个位和十位不能包含7,并且只能为偶数。
3,分析:根据上一题,我们先求出个位和十位数字,然后在加个if判断,就可以做出来了。
package com.baidu.demo;
public class Method {
public static void main(String[] args) {
int sum=0;
int [] arr={77,72,19,16,18,57,12,71,24};
for(int i=0;i<arr.length;i++){
if(arr[i]/10!=7&&arr[i]%10!=7&&arr[i]%2==0){
sum+=arr[i];
System.out.println(arr[i]);
}
}
System.out.println("元素之和为:"+sum);
}
}
4,结果展示
评委打分
1,需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值。请写代码实现。(小数不考虑)
2,分析:首先我们让6个评委输入各自的分数,然后遍历这些分数,找出最大值和最小值,求出分数总和之后求平均值。
package com.baidu.demo;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int[] arr=new int[6];
for (int i = 0; i <arr.length ; i++) {
System.out.println("请第"+(i+1)+"评委输入分数");
int score=sc.nextInt();
arr[i]=score;
}
int max=getMax(arr);
int min=getMin(arr);
int sum=getSum(arr);
int avg=(sum-max-min)/(arr.length-2);
System.out.println("该选手的分数为:"+avg);
}
public static int getSum(int[] arr){
int sum=0;
for (int i = 0; i <arr.length ; i++) {
sum+=arr[i];
}
return sum;
}
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];
}
return max;
}
public static int getMin(int[] arr){
int min=arr[0];
for (int i = 0; i <arr.length ; i++) {
if(min>arr[i])
min=arr[i];
}
return min;
}
}
3,结果展示
数据加密
1,需求:键盘录入数据,要求数据是四位的整数,现需要对数据进行加密,加密规则如下:
每位数字都加上5,然后除以10的余数代替该数字,
再将第一位和第四位交换,第二位和第三位交换,
请把加密后的数据输出到控制台
2,分析:求法和第一题一样,先求出四位数的四个数字,再将每位数字都加上5,然后除以10的余数代替该数字,最后定义中间变量来交换数字位置。
package com.baidu.demo;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入要加密的数据:");
int number=sc.nextInt();
//每位数字都加上5。然后除以10的余数代替该数字。
int ge=number%10;
int shi=number/10%10;
int bai=number/100%10;
int qian=number/1000%10;
ge=(ge+=5)%10;
shi=(shi+=5)%10;
bai=(bai+=5)%10;
qian=(qian+=5)%10;
// 再将第一位和第四位交换。第二位和第三位交换。
int temp=qian;
qian=ge;
ge=temp;
int temp2=bai;
bai=shi;
shi=temp2;
System.out.println("加密后的数字:");
System.out.print(+ge);
System.out.print(+shi);
System.out.print(+bai);
System.out.print(+qian);
}
}
3,结果展示
ATM取款
1,需求:假设一个简单的在ATM的取款过程如下:首先提示用户输入密码(password),最多只能输入3次,超过3次则提示用户"密码错误,请取卡"交易结束。如果用户密码正确,再提示用户输入金额(amount),ATM只能输出100元的纸币,一次取钱数要求最低0元,最高1000元。
如果用户输入的金额符合上述要求,则打印输出用户取的钱数,最后提示用户"交易完成,请取卡",否则提示用户重新输入金额。假设用户密是"111111"。
2,分析:创建键盘录入对象,判断密码是否正确,记录密码次数,判断次数大于等于3次,输出提示。如果密码正确,进入循环,再次判断金额是否合法,合法,提示取出现金多少,交易完成。
package com.baidu.demo;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入密码:");
for(int i=0;;i++)
{
int password=sc.nextInt();
if(password!=111111){
if(i>=2)
{
System.out.print("密码错误三次,请取卡");
break;
}
System.out.print("密码错误,请重新输入:");
continue;
}
if(password==111111)
{
System.out.println("请输入取款金额:");
for(int j=0;;j++){
int amount=sc.nextInt();
if(amount>=0&&amount<=1000&&amount%100==0){
System.out.println("请取走现金:"+amount+"元");
System.out.println("交易完成,请取卡");
break;
}
else{
System.out.println("您输入的金额有误,请重新输入:");
}
}
}
break;
}
}
}
3,结果展示
不死兔子
1,需求:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?
2,分析:
十二个月我们就定义数组来实现int[] arr = new int[20];
月数: 1 2 3 4 5 6
对数: 1 1 2 3 5 8 …
从第三个月开始 兔子的对数 等于 前两个月对数之和
我们可以去定义一个数组来存储兔子的对数,arr[0] = 1,arr[1] = 1;
找规律
arr[2] = arr[1] + arr[0];
arr[3] = arr[2] + arr[1];
arr[4] = arr[3] + arr[2];
arr[5] = arr[4] + arr[3];
arr[i] = arr[i-1] + arr[i-2];
package com.baidu.demo;
public class Test {
public static void main(String[] args) {
//初始化月份 数组的索引表示月份 索引对应的元素表示兔子对数
int[] arr = new int[20];
arr[0] = 1;
arr[1] = 1;
for (int i = 2; i < arr.length; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
}
System.out.println("第二十个月兔子的总对数为:\n"+arr[19]);
}
}
3,结果展示