Java经典代码
1.九九乘法表
代码图:
package day0306;
public class Demo01 {
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();
}
}
}
效果图:
1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
2.实现交替式发言
(如何实现交替式发言)
运行结果:
3.输出101~200之间的质数
判断101-200之间有多少个素数,并输出所有素数。 素数又叫质数,就是除了1和它本身之外,再也没有整数能被它整除的数。也就是素数只有两个因子。
public class Text$01 {
public static void main(String[] args) {
int i,j,n,m,x;//n用来存取余数;m是用来统计具体一个数的因子;
n = 0; m = 0; x = 0;//x是用来统计101~200之间素数的个数
for(i = 101; i <= 200; i++) {
for(j = 1; j<=i; j++) {//双重循环
n = i%j;
if(n == 0) {//判断余数为零,因子加一
m = m + 1;
}
}
if(m==2) {//当因子只有两个,那么该数为质数
System.out.println(i+" ");//输出质数
x = x+1;
}
m = 0;//使用完记得清零
}
System.out.println();
System.out.println("在101~200之间一共有素数"+x+"个");
}
}
4.
4.Java中输入3个整数并且实现按从小到大排序输出
1.if循环死方法(一个大循环if-else内嵌一个if-else-if-else法)
import java.util.Scanner;
public class demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("a=");
int a = sc.nextInt();
System.out.print("b=");
int b = sc.nextInt();
System.out.print("c=");
int c = sc.nextInt();
if (a > b) { //a>b的情况 a较大
if (c > a) { //c>a 已知a>b c最大
System.out.println(b + "," + a + "," + c);
} else if (c < b) { //c<b 已知a>b
System.out.println(c + "," + b + "," + a);
} else {
System.out.println(b + "," + c + "," + a);
}
// a<b情况
} else {
if (c < a) { //a<b c<a
System.out.println(c + "," + a + "," + b);
} else if (c > b) { //a<b c>b
System.out.println(a + "," + b + "," + c);
} else {
System.out.println(a + "," + c + "," + b);
}
}
}
}
2.大中小逐个求法(三个if-else-if-else)
import java.util.Scanner;
public class test1 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.print("Enter a:");
int a=input.nextInt();
System.out.print("Enter b:");
int b=input.nextInt();
System.out.print("Enter c:"); //输入三个数
int c=input.nextInt();
int max =0;
int mid=0;
int min=0;
if (a>b & a>c){max=a;}else if(b>a & b>c){ //暴力列举出最大数情况
max=b;
}else{
max=c;
}
if(a<b & a<c ){min=a;}else if (b<a & b<c){ //列举出最小数所有情况
min=b;
}else{
min=c;
}
if(a<b & a>c || a<c &a>c){mid=a;}else if(b<a & b>c || b>a & b<c){mid=b;}else{mid=c;} //列举出中间值情况
System.out.println(min+" "+mid+" "+max);
}
}
3.容器互换法(定义一个容器temp)(三个if并列法)
import java.util.Scanner;
public class demo {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("Enter");
int a = s.nextInt();
int b = s.nextInt();
int c = s.nextInt();
if (a < b) {
int t = a; /*如果a<b时候 a、b数值互换*/
a = b;
b = t;
}
if (a < c) { /*如果a<c时候 a、c数值互换*/
int t = a;
a = c;
c = t;
}
if (b < c) { /*如果b<c时候 b、c数值互换*/
int t = b;
b = c;
c = t;
}
System.out.println("");
System.out.println(c + " " + b + " " + a);
}
}
5.打印图形
1.打印等腰三角形(含解析)
public class PrintDY {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
//外层循环;执行五次,控制图形有多少行
for(int j=1;j<=5-i;j++){
//内层循环1;控制打印空格,且不能换行
System.out.print(" ");
}
for (int j = 1;j<=2*i-1;j++){
//内层循环2;控制打印*,且不能换行
//两个内层循环当中的j为循环内的局部变量,一旦脱离了创造它的循环,内存及释放,因此两者不为同一变量。
//易错 j<=2*i-1而不是+1
System.out.print("*");
}
//输出换行符;在外层循环与内层循环之间
System.out.println();
}
}
}
代码图:
* *** ***** ******* *********
2.打印菱形
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();//输出等腰三角形边长为n
for (int i = 1; i <= n; i++) {//菱形上半部分为等腰三角形
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
for (int j = 1; j <= (i - 1) * 2 + 1; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = 1; i <= n - 1; i++) {//下半部分为道三角形
for (int j = 1; j <= i; j++) {
System.out.print(" ");
}
//(n*2)-1
for (int j = 1; j <= 2 * n - 1 - i * 2; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
代码图:
*
***
*****
*******
*********
*******
*****
***
*
3.打印直角三角形(特殊)
public class Text02 {
public static void main(String[] args) {
for(int i = 1; i <= 4;i++) {
for(int j = 1; j <= 2*i-1;j++) {
System.out.print("*");
}
for(int j = 1; j<=9-(5-i)*2; j++) {
System.out.print(" ");
}
System.out.println();
}
}
}
/*代码图:
*
***
*****
*******
4.打印平行四边形
public class PrintParallelogram {
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5 - i; j++) {
System.out.print(" ");
}
for (int j = 1;j<=5;j++){
System.out.print("*");
}
System.out.println();
}
}
}
/*代码图:
*****
*****
*****
*****
*****
6.数组赋值循环练习
import java.util.Scanner;
//5、黄黄去参加青年歌手大奖赛,有10个评委打分,(去掉一个最高一个最低)求平均分?利用数组实现评委打分录入存储,然后数组排序后去掉最高分最低分,计算显示平均分。
public class Text05 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int[] score = new int[10];
int sum = 0;
for(int i = 0; i<score.length; i++) {
System.out.println("请输入第"+(i+1)+"位评委打分:");//因为数组i初始值必须赋0,目 //的是让score[0]赋到值
int a = scan.nextInt();
if(a<0 || a>100) {
System.out.println("您输入的数据有误!请重新输入:");
i--;
continue;//continue后面不能接语句,否则系统会报错。
}
score[i] = a;
sum = sum + a;
}
int max = score[0];
int min = score[0];
for(int i = 0; i<score.length; i++) {
//找出数组的最大值与最小值
if(max < score[i]) {
max = score[i];
}else if(min > score[i]) {
min = score[i];
}
}
sum = sum-min-max;
int avgScore = sum/(score.length-2);
System.out.println("该选手的平均成绩为:"+avgScore);
}
}
/*
请输入第1位评委打分:
1
请输入第2位评委打分:
2
请输入第3位评委打分:
3
请输入第4位评委打分:
4
请输入第5位评委打分:
5
请输入第6位评委打分:
6
请输入第7位评委打分:
8
请输入第8位评委打分:
9
请输入第9位评委打分:
7
请输入第10位评委打分:
10
该选手的平均成绩为:5
7.杨辉三角(二维数组练习)
public class Textyanghui {
public static void main(String[] args) {
int[][] arr = new int[10][10];
for (int i = 0; i < arr.length; i++) {
arr[i][0] = 1;
}
for (int i = 1; i < arr.length; i++) {
for (int j = 1; j < arr.length; j++) {
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
}
for (int i = 0; i < arr.length ; i++) {
for (int k = arr.length-i;k>0;k--) {
}
for (int j = 0; j < arr.length; j++) {
if (arr[i][j]!=0) {
System.out.print(arr[i][j]+" ");}
}
System.out.println();
}
}
}
/*
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
8.数组练习
1、从键盘读入学生成绩,找出最高分,并输出学生成绩等级。(①使用Arrays当中的copyOF方法保存数组 copyOF也可作为数组扩容) 成绩>=最高分-10 等级为‘A’ 成绩>=最高分-20 等级为‘B’ 成绩>=最高分-30 等级为‘C’ 其余 等级为'D'
import java.util.Arrays;
import java.util.Scanner;
public class ArrayDemo01 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入学生人数:");
int stuNum = scan.nextInt();
//根据之前录入的学生人数,声明数组开辟对应大小空间
int[] scores = new int[stuNum];
System.out.println("请录入"+stuNum+"个成绩:");
for(int i=0;i<stuNum;i++){
scores[i] = scan.nextInt();
}
//for循环得到所有成绩,都存储在数组 scores中
//通过 Arrays类中的sort()方法排序,排序后取最高分
//查阅API:static void sort(int[] a) 对指定的 int 型数组按数字升序进行排序。
//在排序前将原本的顺序数组值保存下来,一遍后面要用
int[] newScores = Arrays.copyOf(scores, scores.length);//复制原数组,将原数组顺序保存在新建数组newScores内。
//int[] newScores = scores;//为什么这样不能完成复制数组
Arrays.sort(scores);//将原数组进行升序排序,最高分为最后一个元素
System.out.println("最高分为:"+scores[stuNum-1]);
System.out.println("======================");
for(int i=0;i<stuNum;i++){
String grade = null;
if(newScores[i]>scores[stuNum-1]-10){
grade = "A";
}else if(newScores[i]>scores[stuNum-1]-20){
grade = "B";
}else if(newScores[i]>scores[stuNum-1]-30){
grade = "C";
}else{
grade = "D";
}
System.out.println("第"+(i+1)+"个学生成绩为:"+newScores[i]+" grade is"+grade);
}
}
}
/*
请输入学生人数:
5
请录入5个成绩:
99
86
42
75
38
最高分为:99
======================
第1个学生成绩为:99 grade isA
第2个学生成绩为:86 grade isB
第3个学生成绩为:42 grade isD
第4个学生成绩为:75 grade isC
第5个学生成绩为:38 grade isD
2.编写方法,利用数组实现学生的姓名排序 (按字母顺序)(使用Arrays当中的sort方法进行排列)
package day1030;
import java.util.Arrays;
import java.util.Scanner;
public class ArrayDemo02 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请一次输入5个学生的姓名:");
//声明准备好一个数组接受输入的数据
String[] names = new String[5];
//for循环录入姓名
for(int i=0;i<5;i++){
names[i] = scan.next();//输入姓名赋值存储到数组元素
}
System.out.println("======排序后=======");
//利用Arrays类中的sort()方法进行排序
Arrays.sort(names);
//打印显示排序后的姓名,验证一下
for(String name:names){
System.out.print(name+"\t");
}
}
}
/*
请一次输入5个学生的姓名:
jack
rose
bob
tom
lucy
======排序后=======
bob jack lucy rose tom
3.调用方法求数组的平均值
public class AvgArray {
public static void main(String[] args) {
int[] arr = {1,2,3,4};
System.out.println(avg(arr));
}
public static double avg(int[] arr) {
//实现一个方法avg,以数组为参数,求数组中所有元素的平均值(注意方法的返回值类型)。
double sum = 0;
for(int value : arr) {
sum += value;
}
return sum/arr.length;
}
}
4.利用数组求最值
public class ArrayDemo04 {
public static void main(String[] args) {
int max = 0;
int[] arr4 = new int[]{44, 29, 98, 75};
for (int i = 1; i < arr4.length; i++) {
max = arr4[0];
if (arr4[i] > max) {
max = arr4[i];
}
}
System.out.println(max);
}
}
运行结果:
7
5.反转数组元素各值
//定义一个方法使数组各个元素倒置
public class Demo03 {
public static void main(String[] args) {
int[] arr = new int[]{19, 28, 37, 46, 50};
reserve(arr);
plantArray(arr);
}
//返回值类型:void 因为数组为一个引用形参类型,调用方法直接影响数组值,而不需要返回值
//参数:int[] arr
//反转数组方法
public static void reserve(int[] arr){
for (int start = 0, end = arr.length-1; start <= end; start++, end--) {//利用for循环遍历数组,定义一个头数组元素和尾数组元素,定义一个临时空间temp用来使头元素和尾元素交换,交换完毕后头元素-1,尾元素+1,且头元素不大于尾元素。
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
//返回值类型:void
//参数:int[] arr
//打印数组方法
public static void plantArray(int[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
System.out.print(arr[i]);
} else {
System.out.print(arr[i] + ",");
}
}
System.out.print("]");
}
}
运行结果:
[50,46,37,28,19]
9.类和对象
1.类和对象的创建和引用
import java.util.Scanner;
public class Demoproject03 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int java,C,DB;
ScoreCalc score = new ScoreCalc();
System.out.println("请该同学的输入java的成绩:");
java = scan.nextInt();
System.out.println("请输入C的成绩:");
C = scan.nextInt();
System.out.println("请输入DB的成绩:");
DB = scan.nextInt();
score.avgScore();
System.out.println("该同学总成绩是:"+score.sumScore(java, DB, C));
System.out.println("平均成绩是:"+score.avgScore());
}
}
class ScoreCalc{
//属性;
public int sum;
//方法;
public int sumScore(int a,int b,int c) {//调用此方法自动给类方法属性sum赋值
//方法参数列表可以不用定义,但方法内的其他属性需先定义
sum = a+b+c;
return sum;//如sum属性,需在类当中定义 而a,b,c不需在方法内定义
}
public double avgScore() {
return sum/3;
}
}
/*
请该同学的输入java的成绩:
85
请输入C的成绩:
90
请输入DB的成绩:
100
该同学总成绩是:275
平均成绩是:91.0
10.ArrayList集合经典代码
1.存储学生信息并遍历
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayListTest01 {
public static void main(String[] args) {
ArrayList<Student> array = new ArrayList<Student>();
addStudent(array);
}
/* 定义方法addStudent
返回值类型:void
参数:ArrayList<Student> array*/
public static void addStudent(ArrayList<Student> array) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入学生姓名:");
String name = scan.nextLine();
System.out.println("请输入学生年龄:");
int age = scan.nextInt();
Student s = new Student();
s.setName(name);
s.setAge(age);
array.add(s);
System.out.println("学生姓名:" + s.getName() + "学生年龄:" + s.getAge());
}
}
//学生类
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.age = age;
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
11.自制学生管理系统
public class Student {//定义一个学生类
private String Sid;
private String name;
private int age;
private String address;
public Student() {
}
public Student(String Sid, String name, int age, String address) {
this.Sid = Sid;
this.name = name;
this.age = age;
this.address = address;
}
public String getSid() {
return Sid;
}
public void setSid(String Sid) {
this.Sid = Sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
import java.util.ArrayList;//主界面测试类
import java.util.Scanner;
public class StudentManager {
public static void main(String[] args) {
ArrayList<Student> array = new ArrayList<Student>();
boolean flag = true;
while (flag) {
System.out.println("----------欢迎来到学生管理系统----------");
System.out.println("1.添加学生");
System.out.println("2.删除学生");
System.out.println("3.修改学生");
System.out.println("4.查看所有学生");
System.out.println("5.退出");
System.out.println("请输入你的选择:");
Scanner scan = new Scanner(System.in);
String line = scan.nextLine();
switch (line) {
case "1":
// System.out.println("添加学生");
addStudent(array);
break;
case "2":
// System.out.println("删除学生");
deleteStudent(array);
break;
case "3":
// System.out.println("修改学生");
updateStudent(array);
break;
case "4":
// System.out.println("查看所有学生");
findAllStudent(array);
break;
case "5":
System.out.println("谢谢使用");
flag = false;
// System.exit(0);//退出java虚拟机
break;
}
}
}
public static void addStudent(ArrayList<Student> array) {
Scanner scan = new Scanner(System.in);
String sid;
while(true){
System.out.println("请输入学生学号:");
sid = scan.nextLine();
if (isUsed(array,sid)== true) {
System.out.println("您输入的学号已存在,请重新输入");
}else{
break;
}
}
System.out.println("请输入学生姓名:");
String name = scan.nextLine();
System.out.println("请输入学生年龄:");
int age = scan.nextInt();
System.out.println("请输入学生居住地:");
// String addres = scan.nextLine();不能用nextline(),打回车键会自动录入在nextline当中;
String address = scan.next();
Student s = new Student();
s.setSid(sid);
s.setName(name);
s.setAge(age);
s.setAddress(address);
array.add(s);
System.out.println("添加学生成功");
}
public static void findAllStudent(ArrayList<Student> array) {
if (array.size() == 0) {
System.out.println("无信息,请先添加信息再查询");
return;//为了让程序不再执行return;
}
System.out.println("学号\t\t姓名\t\t年龄\t\t居住地");
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println(s.getSid() + "\t" + s.getName() + "\t\t" + s.getAge() + "岁\t\t" + s.getAddress());
}
}
public static void deleteStudent(ArrayList<Student> array) {
// 创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要删除的学生的学号:");
String Sid = sc.nextLine();
// 我们必须给出学号不存在的时候的提示
// 定义一个索引
// 遍历集合
int index = -1;
for (int i = 0; i < array.size(); i++) {
// 获取到每一个学生对象
Student s = array.get(i);
// 拿这个学生对象的学号和键盘录入的学号进行比较
if (s.getSid().equals(Sid)) {
index = i;
break;
}
}
if (index == -1) {
System.out.println("该信息不存在,请重新输入");
}else{
array.remove(index);
System.out.println("删除学生成功");
}
}
public static void updateStudent(ArrayList<Student> array){
Scanner scan = new Scanner(System.in);
Student s = new Student();
System.out.println("请输入你要修改的学生的学号:");
String sid = scan.nextLine();
int index = -1;
for (int i = 0; i <array.size() ; i++) {
Student student = array.get(i);
if (student.getSid().equals(sid)) {
array.set(i,s);
index = i;
break;
}
}
if (index == -1) {
System.out.println("该信息不存在,请重新输入");
return;
}
System.out.println("请输入学生新姓名:");
String name = scan.nextLine();
System.out.println("请输入学生新年龄:");
int age = scan.nextInt();
System.out.println("请输入学生新居住地:");
String address = scan.next();
s.setSid(sid);
s.setName(name);
s.setAge(age);
s.setAddress(address);
System.out.println("修改学生成功");
}
public static boolean isUsed(ArrayList<Student> array, String sid){
boolean flag = false;
for (int i = 0; i <array.size() ; i++) {
Student s = array.get(i);
if (s.getSid().equals(sid)) {
flag = true;
break;
}
}
return flag;
}
}
运行结果:
----------欢迎来到学生管理系统----------
1.添加学生
2.删除学生
3.修改学生
4.查看所有学生
5.退出
请输入你的选择:
1
请输入学生学号:
2020370227
请输入学生姓名:
邱文宣
请输入学生年龄:
20
请输入学生居住地:
江西抚州
添加学生成功
----------欢迎来到学生管理系统----------
1.添加学生
2.删除学生
3.修改学生
4.查看所有学生
5.退出
请输入你的选择:
1
请输入学生学号:
2020370228
请输入学生姓名:
汪忠辉
请输入学生年龄:
20
请输入学生居住地:
江西上饶
添加学生成功
----------欢迎来到学生管理系统----------
1.添加学生
2.删除学生
3.修改学生
4.查看所有学生
5.退出
请输入你的选择:
3
请输入你要修改的学生的学号:
2020370226
该信息不存在,请重新输入
----------欢迎来到学生管理系统----------
1.添加学生
2.删除学生
3.修改学生
4.查看所有学生
5.退出
请输入你的选择:
1
请输入学生学号:
2020370226
请输入学生姓名:
崔龙成
请输入学生年龄:
20
请输入学生居住地:
贵州贵阳
添加学生成功
----------欢迎来到学生管理系统----------
1.添加学生
2.删除学生
3.修改学生
4.查看所有学生
5.退出
请输入你的选择:
4
学号 姓名 年龄 居住地
2020370227 邱文宣 20岁 江西抚州
2020370228 汪忠辉 20岁 江西上饶
2020370226 崔龙成 20岁 贵州贵阳
----------欢迎来到学生管理系统----------
1.添加学生
2.删除学生
3.修改学生
4.查看所有学生
5.退出
请输入你的选择:
2
请输入你要删除的学生的学号:
2020370226
删除学生成功
----------欢迎来到学生管理系统----------
1.添加学生
2.删除学生
3.修改学生
4.查看所有学生
5.退出
请输入你的选择:
5
谢谢使用
Process finished with exit code 0
11.如何取一个数字的各个位上的数字
public static void main(String[] args){
int s = 1831;
int g = s%10;
int s = s/10%10;
int b = s/100%10;
int q = s/1000%10;
System.out.println("个位数是:"+g+";十位数是:"+sw+";百位数是:"+b+";千位数是:"+q);
}
结果:个位数是:1;十位数是:3;百位数是:8;千位数是:1
12.百钱买百鸡
public class Demo08 {
public static void main(String[] args) {
for (int a = 0; a <= 20; a++) {
for (int b = 0; b < 33; b++) {
for (int c = 0; c < 100; c++) {
if (a + b + c == 100 && 5 * a + 3 * b + c/3 == 100){
System.out.println("鸡翁有"+a+"只,鸡母有"+b+"只,鸡雏有"+c+"只");
}
}
}
}
}
}
13.评委打分
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
int[] arr = new int[6];
System.out.println("请输入六个评委打分:");
Scanner scan = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
arr[i] = scan.nextInt();
}
System.out.println("该选手成绩为:"+(sumArray(arr)-minArray(arr)-maxArray(arr))/4);
}
//方法一:求数组最高分
// 返回值:int
// 参数:arr[]
public static int maxArray(int[] arr) {
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
//方法二:求数组最低分
// 返回值:int
// 参数: arr[]
public static int minArray(int[] arr) {
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
//方法三:数组求和
// 返回值:int sum;
// 参数:int[] arr;
public static int sumArray(int[] arr){
int sum = 0;
for (int i = 0; i <arr.length ; i++) {
sum+=arr[i];
}
return sum;
}
}
运行结果:
请输入六个评委打分:
44
55
66
77
88
99
该选手成绩为:71
14.标准类领养宠物
import java.util.Scanner;
public class ThethodDemo01 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("欢迎来到宠物店!");
System.out.println("请输入要领养的宠物名字:");
String name = scan.next();
System.out.println("请输入要领养的宠物类型:(1.狗狗 2.企鹅)");
int choose = scan.nextInt();
if (choose == 1) {
Dog dog = new Dog();
dog.setName(name);
System.out.println("请输入狗狗的品种:(1.聪明的拉布拉多 2.酷酷的雪纳瑞)");
int pz = scan.nextInt();
if (pz == 1) {
dog.setBrand("聪明的拉布拉多");
} else {
dog.setBrand("酷酷的雪纳瑞");
}
System.out.println("请输入狗狗的健康值(1~100之间):");
int jkz = scan.nextInt();
dog.setHealthValue(jkz);
dog.showInfo();
} else {
Penguin pen = new Penguin();
pen.setName(name);
pen.setHealthValue(100);
pen.setLoveValue(20);
System.out.println("请输入企鹅的性别:(1.Q仔 2.Q妹)");
int xb = scan.nextInt();
if (xb == 1) {
pen.setSex("雄");
} else {
pen.setSex("雌");
}
pen.showInfo();
}
}
}
//编写类的四个步骤
class Dog {
//1--封装所有属性
private String name;
private int healthValue;
private int loveValue;
private String brand;
//2--为封装的所有属性提供对外公共的setter和getter方法
//3--编写构造方法
public Dog() {
}
public Dog(String name, int healthValue, int loveValue, String brand) {
this.name = name;
this.healthValue = healthValue;
this.loveValue = loveValue;
this.brand = brand;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHealthValue() {
return healthValue;
}
public void setHealthValue(int healthValue) {
if (healthValue >= 100 || healthValue <= 0) {
System.out.println("你输入的健康值有误!默认值为60.");
healthValue = 60;
}
this.healthValue = healthValue;
}
public int getLoveValue() {
return loveValue;
}
public void setLoveValue(int loveValue) {
this.loveValue = loveValue;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
//4--编写功能方法,显示宠物所有信息
public void showInfo() {
System.out.println("宠物自白:\n" + "我的名字叫" + getName() + ",健康值是" + getHealthValue() + ",和主人的亲密度是" + getLoveValue() + ",我是一只" + getBrand());
}
}
class Penguin {
//1--封装所有属性
private String name;
private int healthValue;
private int loveValue;
private String sex;
//2--为封装的所有属性提供对外公共的setter和getter方法
//3--编写构造方法
public Penguin() {
}
public Penguin(String name, int healthValue, int loveValue, String sex) {
this.name = name;
this.healthValue = healthValue;
this.loveValue = loveValue;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHealthValue() {
return healthValue;
}
public void setHealthValue(int healthValue) {
this.healthValue = healthValue;
}
public int getLoveValue() {
return loveValue;
}
public void setLoveValue(int loveValue) {
this.loveValue = loveValue;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
//4--编写功能方法,显示宠物所有信息
public void showInfo() {
System.out.println("宠物自白:\n" + "我的名字叫" + getName() + ",健康值是" + getHealthValue() + ",和主人的亲密度是" + getLoveValue() + ",我的性别是" + getSex());
}
}
运行结果:
欢迎来到宠物店!
请输入要领养的宠物名字:
爱爱
请输入要领养的宠物类型:(1.狗狗 2.企鹅)
1
请输入狗狗的品种:(1.聪明的拉布拉多 2.酷酷的雪纳瑞)
2
请输入狗狗的健康值(1~100之间):
120
你输入的健康值有误!默认值为60.
宠物自白:
我的名字叫爱爱,健康值是60,和主人的亲密度是0,我是一只酷酷的雪纳瑞
15.用户登录
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
String username = "itheima";
String password = "czbk";
Scanner scan = new Scanner(System.in);
for (int i = 1; i <= 3; i++) {
System.out.println("请输入用户名:");
String name = scan.next();
System.out.println("请输入密码:");
String pwd = scan.next();
if (name.equals("itheima") && pwd.equals("czbk")) {
System.out.println("登入成功!");
break;
} else {
System.out.println("登入失败!你还有" + (3 - i) + "次机会.");
}
}
}
}
运行结果:
请输入用户名:
qwe
请输入密码:
qe
登入失败!你还有2次机会.
请输入用户名:
itheima
请输入密码:
czbk
登入成功!
16.继承
1.teacher与student类(学生与老师)
public class Person {//建立一个person类作为基类
private String name;
private int age;
public Person(){}
public Person(String name, int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public class Teacher extends Person{//创建一个Teacher类继承Perso类
public Teacher(){}
// public Teacher(String name, int age){
// this.name = name;
// this.age = age;
// } 系统报错:即子类不能直接访问父类的私有变量private
public Teacher(String name, int age){//继承父类当中的构造方法
super(name,age);//使用super关键字来使子类继承父类当中的构造进行方法初始化
}
public void teach(){
System.out.println("用爱成就每一位学员");
}
}
public class Student extends Person{//创建一个Student类继承Person基类
public Student(){}
public Student(String name, int age){
super(name,age);
}
public void study(){
System.out.println("好好学习,天天向上.");
}
}
public class Demo03 {//测试类
public static void main(String[] args) {
Teacher t1 = new Teacher();//无参构造方法
t1.setName("林青霞");
t1.setAge(30);
System.out.println(t1.getName()+";"+t1.getAge());
t1.teach();
Teacher t2 = new Teacher("风清扬", 33);//带参构造方法
System.out.println(t2.getName()+";"+t2.getAge());
t2.teach();
Student s = new Student("花无缺",20);
System.out.println(s.getName()+";"+s.getAge());
s.study();
}
}
运行结果:
林青霞;30
用爱成就每一位学员
风清扬;33
用爱成就每一位学员
花无缺;20
好好学习,天天向上.
2.龟兔赛跑
public class Animal {//定义基类Animal
private double speed;
public Animal() {
super();
}
public Animal(double speed) {
super();
this.speed = speed;
}
public void setSpeed(double speed) {
this.speed = speed;
}
public double getSpeed() {
return speed;
}
public void run(int length) {//定义run方法
System.out.println(length + "米跑了" + (length / speed) + "秒");
}
}
public class Rabbit extends Animal{//定义子类Rabbit
public Rabbit() {
}
public Rabbit(double speed){
super(speed);
}
}
public class Tortoise extends Animal{//定义子类torto
public Tortoise() {
}
public Tortoise(double speed) {
super(speed);
}
}
public class Match {//定义Match类
private double length;
public Match() {
}
public Match(double length) {
this.length = length;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public void begin(Rabbit rr,Tortoise tt){
System.out.println(length+"米兔子跑了"+(this.length/rr.getSpeed())+"秒");
System.out.println(length+"米乌龟跑了"+(this.length/tt.getSpeed())+"秒");
}
}
public class Demo01 {//定义测试类
public static void main(String[] args) {
Rabbit rr = new Rabbit(100);
Tortoise tt = new Tortoise(15);
Match match = new Match(800);
match.begin(rr,tt);
}
}
运行结果:
800.0米兔子跑了8.0秒
800.0米乌龟跑了53.333333333333336秒
17.最大公因数与最小公倍数
1)基本概念
最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。
2)最大公因数:==辗转相除法(欧几里得算法)==
如,求(319,377)的最大公因数
319/377 = 0...319 (319,377)->(377,319)
377/319 = 1...58 (377,319)->(319,58)
319/58 = 5...29 (319,58)->(58,29)
58/29 = 2...0 (58,29) = (29,0)
因此,(319,377)的最大公因数为29;
2.最小公倍数
1)基本概念
两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。整数a,b的最小公倍数记为[a,b],同样的,a,b,c的最小公倍数记为[a,b,c],多个整数的最小公倍数也有同样的记号。
与最小公倍数相对应的概念是最大公约数,a,b的最大公约数记为(a,b)。关于最小公倍数与最大公约数,我们有这样的定理:==(a,b)[a,b]=ab(a,b均为整数)==
package day1125;
import java.util.Scanner;
public class Demo04 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入两个整数:");
int a = scan.nextInt();
int b = scan.nextInt();
System.out.println(gcd1(a,b));
System.out.println(gcd2(a,b));
System.out.println(lcm1(a,b));
System.out.println(lcm2(a,b));
}
public static int gcd1(int a, int b) {//最大公因数 递归法
if(b==0) {
return a;
}
int r = a%b;
return gcd1(b,r);
}
public static int lcm1(int a, int b) {//最小公倍数 公式法
return a*b/gcd1(a,b);
}
public static int gcd2(int a, int b) {//最大公因数 枚举法
int min = Math.min(a, b);
int result = 0;
for(int i = 1; i <= min; i++) {
if(a%i==0 && b%i==0) {
result = i;
}
}
return result;
}
public static int lcm2(int a,int b){//最小公倍数 枚举法
int temp=0;
if(a<=0||b==0){
return -1;
}
temp=Math.max(a,b);
while(temp%a!=0||temp%b!=0){
temp++;
}
return temp;
}
}
18.闰年判断
闰年判断:
package lqbday1129;
import java.util.Scanner;
//给定一个年份,判断这一年是不是闰年。
//当以下情况之一满足时,这一年是闰年:
//年份是4的倍数而不是100的倍数;
//年份是400的倍数。
//其他的年份都不是闰年。
public class Lunnianpanduan {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(true) {
System.out.println("请输入一个年份:");
int year = scan.nextInt();
if(year<1990 || year>2050) {
System.out.println("你输入的日期有误,请重新输入!");
}else {
if((year%4==0 && year%100!=0) || year%400==0) {
System.out.println("该年份是闰年!");
}else {
System.out.println("该年份为平年!");
}
}
}
}
}
19.进制转换
package com.zth;
import java.util.Scanner;
public class JinZhi {
// 十进制转换为 n 进制
public String fun(int n,int num) {
// n 表示目标进制, num 要转换的值
String str= "";
int yushu ; // 保存余数
int shang = num; // 保存商
while (shang>0) {
yushu = shang %n;
shang = shang/n;
// 10-15 -> a-f
if(yushu>9) {
str =(char)('a'+(yushu-10)) + str;
}else {
str = yushu+str;
}
}
return str;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
JinZhi s1 = new JinZhi();
Scanner scanner = new Scanner(System.in);
System.out.print("请输入目标进制:");
int jinzhi = scanner.nextInt();
System.out.print("请输入要转换的数字:");
int num = scanner.nextInt();
scanner.close();
System.out.println(s1.fun(jinzhi, num));
}
}
例:含偏移量的进制转换
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int x = cin.nextInt();
String s = "";//空数组接收值
while (x > 0) {//判断值是否为0
s += (char) ((x - 1) % 26 + 'A');
x = (x - 1) / 26;
}
for (int i = s.length() - 1; i >= 0; i--) {
System.out.print(s.charAt(i));
}
}
}
20.用ArrayList集合存储Student对象,并按学生成绩排序遍历
package demo01;
//4、定义一个学生集合,有年龄,考试分数,姓名三个属性 请从控制台接收5个学生,
// 存储到ArrayList集合对象中,并根据考试分数属性进行排序。
import java.util.ArrayList;
import java.util.Comparator;
public class ArrayList01 {
public static void main(String[] args) {
Student s1 = new Student("张三", 23,99);
Student s2 = new Student("李四", 24,50);
Student s3 = new Student("王五", 25,85);
Student s4 = new Student("赵六", 26,70);
Student s5 = new Student("刘七", 26,90);
ArrayList<Student> list = new ArrayList<>();
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5);
list.sort(new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
int num = s1.getScore() - s2.getScore();
int num1 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;
return num1;
}
});
for (Student s : list) {
System.out.println(s.getName() + "," + s.getAge()+","+s.getScore());
}
}
}
class Student {
private String name;
private int age;
private int score;
public Student() {
}
public Student(String name, int age, int score) {
this.name = name;
this.age = age;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
21.生成随机数
两种方法:
1.Random类
可以生成任意数据类型的随机数,需先创建类对象
package demo04;
import java.util.Random;
public class Text01 {
public static void main(String[] args) {
Random r = new Random();
int i = r.nextInt();//生成所有int范围内的整数
int i1 = r.nextInt(18)-3;//生成[-3,15)之间的数
int i2 = r.nextInt(10);//生成[0,10)之间的数
double d = r.nextDouble();//生成[0,1.0)之间的数
double d1 = r.nextDouble()*7;//生成[0,7.0)之间的数
float f = r.nextFloat();//生成一个[0,1.0)之间的随机浮点型数
boolean b = r.nextBoolean();//生成一个随机布尔型值
long l = r.nextLong();//生成一个long范围之间的所有随机长整型数
}
}
2.Math类当中的random()方法
只能默认生成[0~1.0)之间的浮点型数,可以通过强制类型转换转为int型,无需创建类对象
int a = (int)(Math.random()*1000);//[0,1000) int a1 = (int)(2+Math.random()*98);//[2,100)
我们可以这么定义:
package demo04;
public class Text02 {
public static void main(String[] args) {
int Min = 2;//定义最大值
int Max = 102;//定义最小值
for (int i = 0; i < 10; i++) {
int s = (int) Min + (int) (Math.random() * (Max - Min));//生成一个[2~102)的随机数
System.out.println(s);
}
}
}