26 JAVA作业讲解

26 JAVA作业讲解

闲骡蠕现锨耐馈茶伟郸泵剐吮


资料:

链接:https://pan.baidu.com/s/1FfgWweHscTnIaybHaGldIA
提取码:dm3w


作业:

自己做的答案:

 

老师讲解的答案:

1. 初始化一个长度为 5 的整型数组:使用从控制台 接收键盘输入 5 个数字 进行循环
赋值给一个数组。然后遍历输出改数组(使用 for 循环和增强 for 循环(foreach)进行
遍历)

26 JAVA作业讲解第1张

for循环遍历:

26 JAVA作业讲解第2张

执行:

26 JAVA作业讲解第3张


使用增强for循环(foreach)

26 JAVA作业讲解第4张

执行:

26 JAVA作业讲解第5张

2. 从已知一个整型数组为{1,5,2,7,9,6},让用户输入一个数字,然后查找这个数字所
在位置。如果不存在打印出:”该数字不存在,请重新输入:”,用户只有 5 次机会

26 JAVA作业讲解第6张

执行,有bug:

26 JAVA作业讲解第7张

修正:

26 JAVA作业讲解第8张

执行:

26 JAVA作业讲解第9张

但是上面的这种方式不建议使用,会使得代码逻辑混乱

请使用下面这种方式:

package javahomework;

import java.util.Scanner;

public class Homework {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int[] myArray={1,5,2,7,9,6};
int i=1;

boolean flag = false;
while(i<=5)
{
System.out.print(“请输入一个数字:”);
int number=sc.nextInt();

for(int j=0;j<=myArray.length-1;j++)
{
if(number==myArray[j])
{
System.out.println(“数字在数组中已经找到,索引为:”+j);
//注意:所有代码必须写在break之前,否则会提示代码不可达
flag=true;
break;//跳出当前的for循环

}
}
if(flag)
{
break;//跳出while循环
}
else
{
System.out.println(“数字不存在,请重新输入:”);
i++;
}

}
}
}

执行,bug:最后仍然会提示数字不存在,请重新输入

26 JAVA作业讲解第10张

修正:

26 JAVA作业讲解第11张

执行:

26 JAVA作业讲解第12张

测试:

26 JAVA作业讲解第13张


3. 键盘录入学生成绩(整数类型),如果录入的成绩为-1 表示录入结束,结束同时打印
输出录入的学生成绩的平均值

假设学生有5个:

package javahomework;

import java.util.Scanner;

public class Homework
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);

int[] scores=new int[5];
int i=1;
while(i<=5)
{
System.out.print(“请输入一个学生成绩:”);
int score=sc.nextInt();
if(score==-1)
{
System.out.println(“录入结束,正在计算平均值…”);
break;
}
else
{
scores[i-1]=score;
i++;
}

}

//计算学生成绩的平均值
int sum=0;
for(int j:scores)
{
sum += j;
}
System.out.println(“录入学生成绩的平均值是:”+(sum/scores.length));
}

}

执行:

26 JAVA作业讲解第14张

bug:int型输入成绩的总和为2 2除以5等于0.4   int型取整为0

26 JAVA作业讲解第15张

修正:改为double型

26 JAVA作业讲解第16张

执行:

26 JAVA作业讲解第17张

另一种改法:(个人感觉下面这种写法不好)

package javahomework;

import java.util.Scanner;

public class Homework
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);

int[] scores=new int[5];
int i=1;
int count=0;
while(i<=5)
{
System.out.print(“请输入一个学生成绩:”);
int score=sc.nextInt();
if(score==-1)
{
System.out.println(“录入结束,正在计算平均值…”);
break;
}
else
{
scores[i-1]=score;
count++;
i++;
}

}

//计算学生成绩的平均值
int sum=0;
for(int j:scores)
{
sum += j;
}
System.out.println(“录入学生成绩的平均值是:”+(sum/count));
}

}

执行:

26 JAVA作业讲解第18张

对于可变的数组会使用集合:

集合(list->ArrayList/LinkedList)
Set->HashSet


4. 有一组数分别为 18,25,7,36,13,2,89,63 求出最小的值,并将最小的数与最小的数所
在的下标输出

package javahomework;

 

public class Homework
{
public static void minNumAndIndex(int[] nums)
{
int temp=nums[0];
int index=0;
for(int i=0;i<=nums.length-1;i++)
{
if(nums[i]<temp)
{
temp=nums[i];
index=i;
}
}

System.out.println(“数组中的最小值为:”+temp+” 下标为”+index);

}

public static void main(String[] args)
{
int[] nums={18,25,7,36,13,2,89,63};
minNumAndIndex(nums);
}

}

执行:

26 JAVA作业讲解第19张


5. 统计字符数组 char[ ] chs ={‘统’,’计’,’一’,’个’,’字’,’符’,’在’,’字’,’符’,’串’,’中’};中字
符’字’出现的位置。同时计算共有多少个字符’字’

26 JAVA作业讲解第20张

对于8种基本数据类型来说,要对比是否相等要使用==
对于符合数据类型(引用数据类型)对比如果使用==则是对比的内存地址,这时候需要是哪个equals对比内容

char a==97:因为a对应的ASCII码为97

26 JAVA作业讲解第21张

26 JAVA作业讲解第22张

26 JAVA作业讲解第23张

执行:

26 JAVA作业讲解第24张


6. 请将”我” “爱” “你”存入数组,然后正着和反着输出

26 JAVA作业讲解第25张

执行:

26 JAVA作业讲解第26张


7. 声明一个 int 型的数组,循环接收 8 个学生的成绩,计算这 8 个学生的总分及平
均分、最高分和最低分

package javahomework;
import java.util.Scanner;

public class Homework
{
/**
* 计算成绩的最大值
* @param score 传入成绩的整型数组
* @return 返回成绩的最高分
*/
public static int maxScore(int[] score)
{
int temp=score[0];
for(int i=1;i<=score.length-1;i++)
{
if(score[i]>temp)
{
temp=score[i];
}
}
return temp;
}

/**
* 计算成绩的最小值
* @param score 传入成绩的整型数组
* @return 返回成绩的最低分
*/
public static int minScore(int[] score)
{
int temp=score[0];
for(int i=1;i<=score.length-1;i++)
{
if(score[i]<temp)
{
temp=score[i];
}
}
return temp;
}

/**
* 计算成绩的最大值
* @param score 传入成绩的整型数组
* @return 返回成绩的总分
*/
public static int totalScore(int[] score)
{
int sum=0;
for(int i=0;i<=score.length-1;i++)
{
sum+=score[i];
}
return sum;
}

/**
* 计算成绩的平均值
* @param score 传入成绩的整型数组
* @return 返回成绩的平均分
*/
public static int averageScore(int[] score)
{
int sum=0;
for(int i=0;i<=score.length-1;i++)
{
sum+=score[i];
}
return sum/score.length;
}

public static void main(String[] args)
{
Scanner sc =new Scanner(System.in);
int[] score=new int[8];
for(int i=0;i<=score.length-1;i++)
{
System.out.println(“请输入第”+(i+1)+”个学生的成绩”);
score[i]=sc.nextInt();
}

System.out.println(“总分为:”+totalScore(score));
System.out.println(“平均分:”+averageScore(score));
System.out.println(“最高分:”+maxScore(score));
System.out.println(“最低分:”+minScore(score));

}
}

执行:

请输入第1个学生的成绩
60
请输入第2个学生的成绩
70
请输入第3个学生的成绩
80
请输入第4个学生的成绩
90
请输入第5个学生的成绩
91
请输入第6个学生的成绩
92
请输入第7个学生的成绩
93
请输入第8个学生的成绩
99
总分为:675
平均分:84
最高分:99
最低分:60


8. 求整数 1~99(除去个位为 4 的数)的累加值。(使用 for 循环实现)

26 JAVA作业讲解第27张

取反计算:

26 JAVA作业讲解第28张


9. 打印出 100~999 之间的所有“水仙花数”。所谓“水仙花数”,是指一个 3 位
数,其各位数字立方和等于该数本身。例如:153 是一个“水仙花数”,因为
153=13 +5 3 +3 3

String.valueOf:将int型的i转化为字符串

26 JAVA作业讲解第29张

charAt(0)返回字符串中索引为0的值

26 JAVA作业讲解第30张

//String.valueOf(String.valueOf(i).charAt(0))将char转化为String字符串
//将string转化为int:
//Integer.parseInt(String.valueOf(String.valueOf(i).charAt(0)))

26 JAVA作业讲解第31张

取个位,十位,百位

26 JAVA作业讲解第32张

源码:

26 JAVA作业讲解第33张

最终源码:

package javahomework;

 

public class Homework
{
public static void main(String[] args)
{
int count=0;
for(int i=100;i<=999;i++)
{
int firstNumber=Integer.parseInt(String.valueOf(String.valueOf(i).charAt(0)));
int secondNumber=Integer.parseInt(String.valueOf(String.valueOf(i).charAt(1)));
int thirdNumber=Integer.parseInt(String.valueOf(String.valueOf(i).charAt(2)));

int f=firstNumber*firstNumber*firstNumber;
int s=secondNumber*secondNumber*secondNumber;
int t=thirdNumber*thirdNumber*thirdNumber;
if((f+s+t)==i)
{
System.out.println(i);
count++;
}
}
System.out.println(“100-999之间共有”+count+”个水仙花数”);

}

}

执行:

26 JAVA作业讲解第34张

还可以使用取余取模的方式来取个位,十位,百位

取余的代码:

package javahomework;
import java.util.Scanner;

public class Homework
{

public static void main(String[] args)
{
System.out.println(“100~999 之间的水仙花数为:”);
for(int i=100;i<=999;i++)
{
//取百位数字
int b = i/100;
//取十位数字
int s=i%100/10;
//取个位数字
int g=i%10;
//水仙花数
int shuiNum=b*b*b+s*s*s+g*g*g;
if(i==shuiNum)
{
System.out.print(i+” “);;
}
}

}
}

26 JAVA作业讲解第35张


10. 编写一个程序,要求用户输入两个数字,不使用额外的变量,将这两个变量值交

使用中间变量时:

26 JAVA作业讲解第36张

不使用中间变量:

26 JAVA作业讲解第37张

真正编程时还是使用中间变量


11. 打印“九九乘法表

26 JAVA作业讲解第38张

执行:

26 JAVA作业讲解第39张


12. 打印金字塔图形

package javahomework;

import java.util.Scanner;

public class Homework
{
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
System.out.println(“请输入你要打印的金字塔层数:”);
int num=sc.nextInt();

//循环遍历层
for(int i=1;i<=num;i++)
{
//循环打印空格
for(int j=1;j<=num-i;j++)
{
System.out.print(” “);
}

//循环打印*
for(int k=1;k<=2*i-1;k++)
{
System.out.print(“*”);
}

//一行打印结束,换行
System.out.println(“”);
}
}

}

执行:

26 JAVA作业讲解第40张


 

暇当伶疗习订随拜台密撕稳寐