作了好事受到职责而坚持下去,这才是奋斗的本色。——巴尔扎克
本讲内容:java常用100例
例1:打印金字塔
public class T {
public static void main(String[] args){
int lay=10;
for(int i=1;i<=lay;i++){//表示层
for(int j=1;j<=lay-i;j++){//找出空格规律
System.out.print(" ");
}
for(int k=1;k<=i*2-1;k++){//找出*规律
System.out.print("*");
}
System.out.println();
}
}
}
结果:
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
例2:打印空金字塔
public class T {
public static void main(String[] args){
int lay=10;
for(int i=1;i<=lay;i++){
for(int j=1;j<=lay-i;j++){
System.out.print(" ");
}
for(int k=1;k<=i*2-1;k++){
if(i==1||i==lay){//判断该层是否是顶层或者是低层
System.out.print("*");
}else{
if(k==1||k==i*2-1){//第一个和最后一个打*
System.out.print("*");
}else{
System.out.print(" ");
}
}
}
System.out.println();
}
}
}
</span></span>
结果:
<span style="font-size:18px;"><span style="font-size:18px;"> *
* *
* *
* *
* *
* *
* *
* *
* *
*******************
例三:评委打分,去掉成绩最高与最低的分数,得到最后平均分
package a;
import java.io.*;
public class Text {
public static void main(String[] args) {
Judge judge = new Judge();
System.out.println(judge.lastFen());
System.out.println("最差的裁判是"+(judge.getWorst()+1));
}
}
class Judge {
// 定义一个可以存放8个小数数组
float[] fens = null;
int size = 8;
public Judge() {// 构造函数一般进行初始化的
fens = new float[size];
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try {// 如果输入是abc等
for (int i = 0; i < fens.length; i++) {
System.out.println("请输入第" + (i + 1) + "裁判的成绩");
fens[i] = Float.parseFloat(br.readLine());
}
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();// 只需关br即可(isr即关了),
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 得到运动员最后得分
public float lastFen() {
float allFen = 0;
int minIndex = this.getHignFenIndex();
int maxIndex = this.getLowFenIndex();
for (int i = 0; i < fens.length; i++) {
if (i != minIndex && i != maxIndex) {
allFen += fens[i];
}
}
return allFen / (fens.length - 2);
}
// 得到最高分(目的找到最高分的下标)
private int getHignFenIndex() {
// 选择法,认为第一个就是最高分
float maxFen = fens[0];
int maxIndex = 0;
for (int i = 1; i < fens.length; i++) {
if (maxFen < fens[i]) {
maxFen = fens[i];
maxIndex = i;
}
}
return maxIndex;
}
// 得到最低分(目的找到最低分的下标)
private int getLowFenIndex() {
// 选择法,认为第一个就是最低
float minFen = fens[0];
int minIndex = 0;
for (int i = 1; i < fens.length; i++) {
if (minFen > fens[i]) {
minFen = fens[i];
minIndex = i;
}
}
return minIndex;
}
//得到最差评委
public float getWorst() {
float lastFen=this.lastFen();
int worstIndex=0;//认为最差的
float cai=Math.abs(fens[0]-lastFen);
float tempCai=0f;
for(int i=1;i<fens.length;i++){
tempCai=Math.abs(fens[i]-lastFen);
if(cai<tempCai){
worstIndex=i;
cai=tempCai;
}
}
return worstIndex;
}
}
例四:猴子排队
1:老猴子用冒泡排序
2:老猴子用选择排序
3: 老侯用插入排序
public class Text {
public static void main(String[] args) {
//定义一个可以装三只猴子的对象数组
int size=3;
Monkey[] monkeys=new Monkey[size];
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
//初始化各个猴子,直接初始化
for(int i=0;i<monkeys.length;i++){
System.out.println("请输入第"+(i+1)+"只猴子的高度");
try {
String height=br.readLine();//Float.parseFloat(height) string to float
monkeys[i]=new Monkey((i+1)+"",Integer.parseInt(height));
} catch (IOException e) {
e.printStackTrace();
}
}
//让老猴子排序
Monkey oldMonkey=new Monkey("1",1);
//老猴子冒泡排序
// oldMonkey.bubbleSort(monkeys);
// oldMonkey.selectSort(monkeys);
oldMonkey.insertSort(monkeys);
//验证,输出
oldMonkey.show(monkeys);
}
}
// 猴子类
class Monkey {
private String id;
private int height;
public Monkey(String id, int height) {
this.id = id;
this.height = height;
}
// 冒泡排队(相邻两两比较)
public void bubbleSort(Monkey[] monkeys) {
// 外层循环的次数是length-1
for (int i = 0; i < monkeys.length-1; i++) {
// 内循环排每次好的就不用在排了-i
for (int j = 0; j < monkeys.length - 1 - i; j++) {
if (monkeys[j].height > monkeys[j + 1].height) {
//身高交换
int temp1=0;
temp1=monkeys[j].height;
monkeys[j].height=monkeys[j+1].height;
monkeys[j+1].height=temp1;
//编号交换
String temp2="";
temp2=monkeys[j].id;
monkeys[j].id=monkeys[j+1].id;
monkeys[j+1].id=temp2;
}
}
}
}
//选择排序(认为第一个是最小的并记下下标,然后和后面的比较)
public void selectSort(Monkey[] monkeys){
for(int i=0;i<monkeys.length;i++){
//认为下标为i的猴子是最低的
int minHeight=monkeys[i].height;
int minIndex=i;
//和后面的比较
for(int j=i+1;j<monkeys.length;j++){
if(minHeight>monkeys[j].height){
//修正一下最小值
minHeight=monkeys[j].height;
//修正下标
minIndex=j;
}
}
if(minIndex!=i){
//身高交换
int temp1=0;
temp1=monkeys[minIndex].height;
monkeys[minIndex].height=monkeys[i].height;
monkeys[i].height=temp1;
//编号交换
String temp2="";
temp2=monkeys[minIndex].id;
monkeys[minIndex].id=monkeys[i].id;
monkeys[i].id=temp2;
}
}
}
//插入排序,思想:认为第一个猴子就是有序的,后面的猴子依次的插入到队伍当中
public void insertSort(Monkey[] monkeys){
//开始排序 任务地0个猴子就是有序的所以把第二个猴子插入到已有的队伍当中
for(int i=1;i<monkeys.length;i++){
//记录要插入猴子的身高
int insertHeight=monkeys[i].height;
String insertNo=monkeys[i].id;
//记录插入猴子前一个猴子的编号
int insertIndex=i-1;
while(insertIndex>=0&&monkeys[insertIndex].height>insertHeight){
monkeys[insertIndex+1].height=monkeys[insertIndex].height;
monkeys[insertIndex+1].id=monkeys[insertIndex].id;
insertIndex--;//再跟前面一个比较
}
//这时候 insertIndex+1 是要插入的值的前面的值,变成要插入的值 完成值的交换
monkeys[insertIndex+1].height=insertHeight;
monkeys[insertIndex+1].id=insertNo;
}
}
//显示队列
public void show(Monkey[] monkeys){
for(int i=0;i<monkeys.length;i++){
System.out.println("猴子编号:"+monkeys[i].id+"\t身高"+monkeys[i].height+"cm");
}
}
}