java入门练习题2
1. 问题1
用Arrays类sort()对数组元素进行升序降序排列
java
package demo.arr.ArraysClassDemo;
import java.util.Arrays;
public class ArraysClassDemo {
public static void main(String[] args) {
int[] vec={0,15,-14,45,20,70};
Arrays.sort(vec);
System.out.println("升序排列:");
for (int i=0;i<vec.length ;i++){
System.out.print(vec[i]+" ");
}
System.out.println("\n");
System.out.println("降序排列:");
for (int i=vec.length-1;i>=0 ;i--){
System.out.print(vec[i]+" ");
}
}
}
package demo.arr.ArraysClassDemo;
import java.util.Arrays;
public class ArraysClassDemo {
public static void main(String[] args) {
int[] vec={0,15,-14,45,20,70};
Arrays.sort(vec);
System.out.println("升序排列:");
for (int i=0;i<vec.length ;i++){
System.out.print(vec[i]+" ");
}
System.out.println("\n");
System.out.println("降序排列:");
for (int i=vec.length-1;i>=0 ;i--){
System.out.print(vec[i]+" ");
}
}
}
2. 问题2
用Arrays类sort()对数组改成字符串输出
java
package demo.arr.arraysSort;
import java.util.Arrays;
public class ArraysSort {
public static void main(String[] args){
int[] scores = {78,93,97,84,63};
System. out.println( "遍历数组中的值" );
for( int i=0 ; i< scores. length ; i++){
System. out.print( scores[ i]+ " ");
}
Arrays. sort(scores);
System. out.println( "\n\r排序后数组元素中的值" );
for( int i=0 ; i< scores. length ; i++){
System. out.println( scores[i]);
}
System. out.println( "\n改成字符串输出:" );
System. out.println(Arrays. toString(scores));
}
}
package demo.arr.arraysSort;
import java.util.Arrays;
public class ArraysSort {
public static void main(String[] args){
int[] scores = {78,93,97,84,63};
System. out.println( "遍历数组中的值" );
for( int i=0 ; i< scores. length ; i++){
System. out.print( scores[ i]+ " ");
}
Arrays. sort(scores);
System. out.println( "\n\r排序后数组元素中的值" );
for( int i=0 ; i< scores. length ; i++){
System. out.println( scores[i]);
}
System. out.println( "\n改成字符串输出:" );
System. out.println(Arrays. toString(scores));
}
}
3. 问题3
3.1. 数组新增
java
package demo.arr.arrOperation;
import java.util.Scanner;
public class Added {
public static void main(String[] args) {
int[] arr = {1,5,4,6,2};
int num;
//遍历初始数组
System.out.print("初始数组为:");
for(int i : arr){
System.out.print(i + " ");
}
//换行
System.out.println();
//输入新增的数
System.out.print("请输入您要新增的数:");
Scanner in = new Scanner(System.in);
num = in.nextInt();
in.close();
// 扩容
int[] newArr = new int[arr.length + 1]; // 1.新建一个老数组长度+1的新数组
for (int i = 0; i < arr.length; i++) {
newArr[i] = arr[i]; // 把每个元素赋值给新数组中
}
newArr[arr.length] = num; // 把没有的数字赋值给新数组中的末尾
arr = newArr; // 把新数组的引用地址赋值给老数组
// 遍历输出新数组
for (int arr_num : arr) {
System.out.print(arr_num + " ");
}
}
}
package demo.arr.arrOperation;
import java.util.Scanner;
public class Added {
public static void main(String[] args) {
int[] arr = {1,5,4,6,2};
int num;
//遍历初始数组
System.out.print("初始数组为:");
for(int i : arr){
System.out.print(i + " ");
}
//换行
System.out.println();
//输入新增的数
System.out.print("请输入您要新增的数:");
Scanner in = new Scanner(System.in);
num = in.nextInt();
in.close();
// 扩容
int[] newArr = new int[arr.length + 1]; // 1.新建一个老数组长度+1的新数组
for (int i = 0; i < arr.length; i++) {
newArr[i] = arr[i]; // 把每个元素赋值给新数组中
}
newArr[arr.length] = num; // 把没有的数字赋值给新数组中的末尾
arr = newArr; // 把新数组的引用地址赋值给老数组
// 遍历输出新数组
for (int arr_num : arr) {
System.out.print(arr_num + " ");
}
}
}
3.2. 数组删除
java
package demo.arr.arrOperation;
import java.util.Scanner;
public class Delete {
public static void main(String[] args) {
int[] arr = {1,5,4,6,2};
int num = 0;// 用户给定
int index = -1;// 记录下标
System.out.print("初始数组为:");
for(int i : arr){
System.out.print(i + " ");
}
System.out.println();
Scanner input = new Scanner(System.in);
System.out.println("请输入你要删除的数字:");
num = input.nextInt();
input.close();
// 1.查有没有
for (int i = 0; i < arr.length; i++) {
if (num == arr[i]) {
index = i;// 记录存在的下标
arr[index] = 0;
break;
}
}
if (index == -1) {
System.out.println("没有这个数据,无序删除!");
return;
}
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 0) {
continue;
}
System.out.print(arr[i] + " ");
}
}
}
package demo.arr.arrOperation;
import java.util.Scanner;
public class Delete {
public static void main(String[] args) {
int[] arr = {1,5,4,6,2};
int num = 0;// 用户给定
int index = -1;// 记录下标
System.out.print("初始数组为:");
for(int i : arr){
System.out.print(i + " ");
}
System.out.println();
Scanner input = new Scanner(System.in);
System.out.println("请输入你要删除的数字:");
num = input.nextInt();
input.close();
// 1.查有没有
for (int i = 0; i < arr.length; i++) {
if (num == arr[i]) {
index = i;// 记录存在的下标
arr[index] = 0;
break;
}
}
if (index == -1) {
System.out.println("没有这个数据,无序删除!");
return;
}
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 0) {
continue;
}
System.out.print(arr[i] + " ");
}
}
}
3.3. 数组查找
java
package demo.arr.arrOperation;
public class Lookup {
public static void main(String[] args) {
int[] arr = {1,5,4,6,2};
for(int arr_num : arr){
System.out.print(arr_num);
}
}
}
package demo.arr.arrOperation;
public class Lookup {
public static void main(String[] args) {
int[] arr = {1,5,4,6,2};
for(int arr_num : arr){
System.out.print(arr_num);
}
}
}
3.4. 数组修改
java
package demo.arr.arrOperation;
import java.util.Scanner;
public class Modify {
@SuppressWarnings("resource")
public static void main(String[] args) {
int[] arr = {1,5,4,6,2}; //初始数组
int index = -1; //用来保存数组的下标
int num = 0; //用来保存用户输入的数
//输出初始数组
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.println("\n");
System.out.print("请输入您要修改的数:");
//修改数组
Scanner in = new Scanner(System.in);
num = in.nextInt();
//用户输入的数是否在数组里存在,如果不存在那就要告诉用户,如果存在那就要记录这个元素的下标
for(int i=0; i<arr.length; i++){
if(num == arr[i]){
index = i;
System.out.println("该数在数组中第" + (index+1) + "个位置\n");
break;
}
}
//根据index中的值判断是否存在
if(index == -1){
System.out.println("没有该数!");
return;
}
//数字
System.out.print("请输入修改后的数字:");
arr[index] = in.nextInt();
in.close();
//遍历,输出修改后的数组
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]);
}
}
}
}
package demo.arr.arrOperation;
import java.util.Scanner;
public class Modify {
@SuppressWarnings("resource")
public static void main(String[] args) {
int[] arr = {1,5,4,6,2}; //初始数组
int index = -1; //用来保存数组的下标
int num = 0; //用来保存用户输入的数
//输出初始数组
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.println("\n");
System.out.print("请输入您要修改的数:");
//修改数组
Scanner in = new Scanner(System.in);
num = in.nextInt();
//用户输入的数是否在数组里存在,如果不存在那就要告诉用户,如果存在那就要记录这个元素的下标
for(int i=0; i<arr.length; i++){
if(num == arr[i]){
index = i;
System.out.println("该数在数组中第" + (index+1) + "个位置\n");
break;
}
}
//根据index中的值判断是否存在
if(index == -1){
System.out.println("没有该数!");
return;
}
//数字
System.out.print("请输入修改后的数字:");
arr[index] = in.nextInt();
in.close();
//遍历,输出修改后的数组
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]);
}
}
}
}
4. 问题4
java
/*
* 按照年龄进行排序,冒泡
* N个数字来排队,两两比较小靠前,
* 外层循环N-1(需要比较的轮数)
* 内存循环N-1-i(每轮需要比较的次数)
*/
// Student.java
package demo.arr.bubbleArrayDemo;
public class Student {
private String name;
private int age;
private int score;
public Student(String name, int age, int score) {
super();
this.name = name;
this.age = age;
this.score = score;
}
public Student() {
super();
}
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;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", score=" + score + "]";
}
}
// TestArray.java
/*
* 按照年龄进行排序,冒泡
* N个数字来排队,两两比较小靠前,
* 外层循环N-1(需要比较的轮数)
* 内存循环N-1-i(每轮需要比较的次数)
*/
package demo.arr.bubbleArrayDemo;
public class TestArray {
public static void sort(Student[] stus){
for(int i=0;i<stus.length-1;i++){
for(int j=0;j<stus.length-1-i;j++){
//先从学生对象中获取该学生的年龄
if(stus[j].getAge()>stus[j+1].getAge()){
//交换位置
Student temp=stus[j];
stus[j]=stus[j+1];
stus[j+1]=temp;
}
}
}
}
public static void main(String[] args) {
Student[] stus = new Student[5];//保存学生信息的数组
stus[0]=new Student("aa",20,80);
stus[1]=new Student("bb",22,78);
stus[2]=new Student("cc",18,90);
stus[3]=new Student("dd",25,82);
stus[4]=new Student("ee",24,81);
System.out.println("排序前:");
for (Student student : stus) {
System.out.println(student);
}
sort(stus);//排序
System.out.println("排序后:");
for (Student student : stus) {
System.out.println(student);
}
}
}
/*
* 按照年龄进行排序,冒泡
* N个数字来排队,两两比较小靠前,
* 外层循环N-1(需要比较的轮数)
* 内存循环N-1-i(每轮需要比较的次数)
*/
// Student.java
package demo.arr.bubbleArrayDemo;
public class Student {
private String name;
private int age;
private int score;
public Student(String name, int age, int score) {
super();
this.name = name;
this.age = age;
this.score = score;
}
public Student() {
super();
}
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;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", score=" + score + "]";
}
}
// TestArray.java
/*
* 按照年龄进行排序,冒泡
* N个数字来排队,两两比较小靠前,
* 外层循环N-1(需要比较的轮数)
* 内存循环N-1-i(每轮需要比较的次数)
*/
package demo.arr.bubbleArrayDemo;
public class TestArray {
public static void sort(Student[] stus){
for(int i=0;i<stus.length-1;i++){
for(int j=0;j<stus.length-1-i;j++){
//先从学生对象中获取该学生的年龄
if(stus[j].getAge()>stus[j+1].getAge()){
//交换位置
Student temp=stus[j];
stus[j]=stus[j+1];
stus[j+1]=temp;
}
}
}
}
public static void main(String[] args) {
Student[] stus = new Student[5];//保存学生信息的数组
stus[0]=new Student("aa",20,80);
stus[1]=new Student("bb",22,78);
stus[2]=new Student("cc",18,90);
stus[3]=new Student("dd",25,82);
stus[4]=new Student("ee",24,81);
System.out.println("排序前:");
for (Student student : stus) {
System.out.println(student);
}
sort(stus);//排序
System.out.println("排序后:");
for (Student student : stus) {
System.out.println(student);
}
}
}
5. 问题5
java
/*
* 实现接收三个班级的各四名学员的成绩信息,然后计算每个班级学员的平均分
* 二重循环,外层循环控制班级的数量、内层循环控制每个班级的学员数量
*/
package demo.ease.average;
import java.util.Scanner;
public class Average {
public static void main(String[] args){
int classNum = 3; // 班级数目
int stuNum = 4; // 学生数目
double sum = 0; // 成绩总和
double avg = 0; // 平均分
Scanner input = new Scanner(System. in);
for (int i = 1; i <= classNum ; i ++) { // 外层循环控制班级数
sum = 0; // 成绩总和归0
System. out.println( "***请输入第" + i + "个班级的成绩***" );
for ( int j = 1; j <= stuNum ; j ++) { // 内层循环控制每个班级学员数
System. out.print( "第" + j + "个学员的成绩:" );
int score = input .nextInt(); // 获取输入的成绩
sum = sum + score; // 成绩累加求和
}
avg = sum / stuNum; // 计算平均分
System. out.println( "第" + i + "个班级学员的平均分是:" + avg + "\n");
}
input.close();
}
}
/*
* 实现接收三个班级的各四名学员的成绩信息,然后计算每个班级学员的平均分
* 二重循环,外层循环控制班级的数量、内层循环控制每个班级的学员数量
*/
package demo.ease.average;
import java.util.Scanner;
public class Average {
public static void main(String[] args){
int classNum = 3; // 班级数目
int stuNum = 4; // 学生数目
double sum = 0; // 成绩总和
double avg = 0; // 平均分
Scanner input = new Scanner(System. in);
for (int i = 1; i <= classNum ; i ++) { // 外层循环控制班级数
sum = 0; // 成绩总和归0
System. out.println( "***请输入第" + i + "个班级的成绩***" );
for ( int j = 1; j <= stuNum ; j ++) { // 内层循环控制每个班级学员数
System. out.print( "第" + j + "个学员的成绩:" );
int score = input .nextInt(); // 获取输入的成绩
sum = sum + score; // 成绩累加求和
}
avg = sum / stuNum; // 计算平均分
System. out.println( "第" + i + "个班级学员的平均分是:" + avg + "\n");
}
input.close();
}
}
6. 问题6
java
/*
* 用特殊的加法计算用户输入的三个数之和
*
* 5+3+2=151022
* 9+2+4=183652
* 8+6+3=482466
* 5+4+5=202541
* 7+2+5=?
*/
package demo.ease.plusSpecial;
import java.util.Scanner;
public class PlusSpecial {
public static void main(String[] args) {
System.out.println("***********特殊的加法计算***********");
//定义变量
int num1 = 0,
num2 = 0,
num3 = 0; //用来保存用户输入的三个数
int n = 0; //用来保存用户需要计算的次数
int res = 0; //用来保存计算结果
String answer = ""; //保存重新输入的y/n
boolean isTrue = false; //用来判断执行次数
Scanner in = new Scanner(System.in); //获取输入
//循环控制输入次数
do{
System.out.print("请问您需要进行几次计算:");
n = in.nextInt(); //获取用户输入的次数
System.out.println("计算开始了!\n");
for(int i=1; i<=n; i++){
System.out.println("第" + i + "次计算");
System.out.print("请输入三个正整数,用空格隔开:");
num1 = in.nextInt();
num2 = in.nextInt();
num3 = in.nextInt(); //获取用户输入的三个数
//根据特殊公式计算结果
res = Integer.parseInt(Integer.toString(num1*num2) + Integer.toString(num1*num3) + Integer.toString((num1*num2)+(num1*num3)-num2));
//输出计算结果
System.out.println(num1 + " + " + num2 + " + " + num3 + " = " + res + "\n");
}
//让用户判断是否继续执行
System.out.print("是否要继续进行计算?(y/n):");
answer = in.next(); //获取用户输入的(y/n)
//判断
if (answer.equals("y")){ //“==”比较两个变量本身的值,即两个对象在内存中的首地址;“equals()”比较字符串中所包含的内容是否相同。
isTrue = true;
}else{
isTrue = false;
}
}while(isTrue);
//程序结束
System.out.println("计算结束!");
in.close(); //关闭键盘
}
}
/*
* 用特殊的加法计算用户输入的三个数之和
*
* 5+3+2=151022
* 9+2+4=183652
* 8+6+3=482466
* 5+4+5=202541
* 7+2+5=?
*/
package demo.ease.plusSpecial;
import java.util.Scanner;
public class PlusSpecial {
public static void main(String[] args) {
System.out.println("***********特殊的加法计算***********");
//定义变量
int num1 = 0,
num2 = 0,
num3 = 0; //用来保存用户输入的三个数
int n = 0; //用来保存用户需要计算的次数
int res = 0; //用来保存计算结果
String answer = ""; //保存重新输入的y/n
boolean isTrue = false; //用来判断执行次数
Scanner in = new Scanner(System.in); //获取输入
//循环控制输入次数
do{
System.out.print("请问您需要进行几次计算:");
n = in.nextInt(); //获取用户输入的次数
System.out.println("计算开始了!\n");
for(int i=1; i<=n; i++){
System.out.println("第" + i + "次计算");
System.out.print("请输入三个正整数,用空格隔开:");
num1 = in.nextInt();
num2 = in.nextInt();
num3 = in.nextInt(); //获取用户输入的三个数
//根据特殊公式计算结果
res = Integer.parseInt(Integer.toString(num1*num2) + Integer.toString(num1*num3) + Integer.toString((num1*num2)+(num1*num3)-num2));
//输出计算结果
System.out.println(num1 + " + " + num2 + " + " + num3 + " = " + res + "\n");
}
//让用户判断是否继续执行
System.out.print("是否要继续进行计算?(y/n):");
answer = in.next(); //获取用户输入的(y/n)
//判断
if (answer.equals("y")){ //“==”比较两个变量本身的值,即两个对象在内存中的首地址;“equals()”比较字符串中所包含的内容是否相同。
isTrue = true;
}else{
isTrue = false;
}
}while(isTrue);
//程序结束
System.out.println("计算结束!");
in.close(); //关闭键盘
}
}
7. 问题7
用方法比较两个数的大小
java
package demo.ease.testMax;
public class TestMax {
//主方法
public static void main(String[] args) {
int i = 5; //第一个数
int j = 2; //第二个数
//调用方法
int k = max(i, j);
//输出
System.out.print("最大值是:" + k);
}
//返回两个整数变量较大的值
public static int max(int num1, int num2){
int result = 0; //用来保存结果
//比较大小
if(num1>num2){
result = num1;
} else {
result = num2;
}
//返回结果
return result;
}
}
package demo.ease.testMax;
public class TestMax {
//主方法
public static void main(String[] args) {
int i = 5; //第一个数
int j = 2; //第二个数
//调用方法
int k = max(i, j);
//输出
System.out.print("最大值是:" + k);
}
//返回两个整数变量较大的值
public static int max(int num1, int num2){
int result = 0; //用来保存结果
//比较大小
if(num1>num2){
result = num1;
} else {
result = num2;
}
//返回结果
return result;
}
}
8. 问题8
8.1. sleep方法
java
package demo.oop.sleep;
public class Sleep2 {
//有一个会让人睡觉的东西
void sleepSth(SplleWay slp){
slp.speepWay();
}
//主方法(程序入口)
public static void main(String[] args) {
SplleWay01 slpy1 = new SplleWay01(); //实例化第一种睡觉方法类,创建slpy1对象
SplleWay02 slpy2 = new SplleWay02(); //实例化第二种睡觉方法类,创建slpy2对象
SplleWay03 slpy3 = new SplleWay03(); //实例化第三种睡觉方法类,创建slpy3对象
Sleep2 slp2 = new Sleep2(); //实例化睡觉类,创建slp2对象
//调用会让人睡觉的方法
slp2.sleepSth(slpy1);
slp2.sleepSth(slpy2);
slp2.sleepSth(slpy3);
}
}
//一个描述睡觉的接口接口
interface SplleWay {
//声明抽象方法
public void speepWay();
}
//第一种睡觉方法类调用接口
class SplleWay01 implements SplleWay {
//对接口中的抽象方法进行具体实现
public void speepWay() {
System.out.println("我要侧着睡");
}
}
//第二种睡觉方法类调用接口
class SplleWay02 implements SplleWay {
//对接口中的抽象方法进行具体实现
public void speepWay() {
System.out.println("我要仰着睡");
}
}
//第二种睡觉方法类调用接口
class SplleWay03 implements SplleWay {
//对接口中的抽象方法进行具体实现
public void speepWay() {
System.out.println("我想怎么睡就怎么睡");
}
}
package demo.oop.sleep;
public class Sleep2 {
//有一个会让人睡觉的东西
void sleepSth(SplleWay slp){
slp.speepWay();
}
//主方法(程序入口)
public static void main(String[] args) {
SplleWay01 slpy1 = new SplleWay01(); //实例化第一种睡觉方法类,创建slpy1对象
SplleWay02 slpy2 = new SplleWay02(); //实例化第二种睡觉方法类,创建slpy2对象
SplleWay03 slpy3 = new SplleWay03(); //实例化第三种睡觉方法类,创建slpy3对象
Sleep2 slp2 = new Sleep2(); //实例化睡觉类,创建slp2对象
//调用会让人睡觉的方法
slp2.sleepSth(slpy1);
slp2.sleepSth(slpy2);
slp2.sleepSth(slpy3);
}
}
//一个描述睡觉的接口接口
interface SplleWay {
//声明抽象方法
public void speepWay();
}
//第一种睡觉方法类调用接口
class SplleWay01 implements SplleWay {
//对接口中的抽象方法进行具体实现
public void speepWay() {
System.out.println("我要侧着睡");
}
}
//第二种睡觉方法类调用接口
class SplleWay02 implements SplleWay {
//对接口中的抽象方法进行具体实现
public void speepWay() {
System.out.println("我要仰着睡");
}
}
//第二种睡觉方法类调用接口
class SplleWay03 implements SplleWay {
//对接口中的抽象方法进行具体实现
public void speepWay() {
System.out.println("我想怎么睡就怎么睡");
}
}
8.2. 数山羊
java
package demo.oop.sleep;
import java.util.Scanner;
public class Sleep {
public static void main(String[] args) {
int n = (int)(Math.random()*3+1);
switch(n){
case 1:
SleepProcess slp1 = new SleepWay1();
slp1.beginSleep();
slp1.sleeping();
slp1.doomsday();
case 2:
SleepProcess slp2 = new SleepWay2();
slp2.beginSleep();
slp2.sleeping();
slp2.doomsday();
case 3:
SleepProcess slp3 = new SleepWay3();
slp3.beginSleep();
slp3.sleeping();
slp3.doomsday();
}
}
}
abstract class SleepProcess{
public int n = 0; //你的小羊
public int i; //我是一个小循环
public int myRadom; //随机
@SuppressWarnings("resource")
public void beginSleep(){
System.out.println("哇咔咔,我要睡觉了,我的被窝想我了");
System.out.println("==* 一个被窝和枕头的故事 *== \n");
System.out.print("嗯……数几只羊好呢? ");
//到底几只羊了
myRadom = (int)(Math.random()*5+1);
//你要干什么
Scanner in = new Scanner(System.in);
n = in.nextInt() + myRadom;
for(i=0; i<n; i++){
if(i<n-1){
System.out.print((i+1) + "只羊" + ",");
}else{
System.out.print((i+1) + "只羊…………\n");
}
}
System.out.println("\n(模糊眼)好像不太对,重新数吧。。。");
System.out.println("呼噜噜,呼噜噜Zzzz");
System.out.println("Zzzz");
System.out.println("Zz..");
System.out.println("......\n");
}
//声明睡觉方法
public abstract void sleeping();
@SuppressWarnings("resource")
public void doomsday(){
String answer = ""; //y/n
System.out.println("\n^*)%$@~");
System.out.println("什么?要起床!\n");
System.out.println("#$!/*+#%&");
System.out.println("纳尼,卧槽,什么,世界末日了\n");
System.out.println("…………………………");
System.out.println("可是宝宝还想睡,宝宝不想起床\n");
System.out.print("//*-&(翻译:到底起不起床) y/n: ");
Scanner in = new Scanner(System.in);
answer = in.nextLine();
if(answer.equals("n")){
System.out.println("\n(决心脸)我要睡到天长地久,我要睡到海枯石烂!");
System.out.println("呼噜噜,呼噜噜Zzz..");
System.out.println("...............\n");
System.out.println("嘭!!!!!");
System.out.println("end~ ^_^");
}else{
System.out.println("\n(慌张脸)救命啊,救命啊,世界末日啦!!!");
System.out.println("...............\n");
System.out.println("嘭!!!!!");
System.out.println("end~ ^_^");
}
System.out.println("------------------------------------\n");
return;
}
//睡觉睡觉
public void sleep(){
//开始睡觉啦
beginSleep();
//你想怎么睡就怎么睡
sleeping();
//宝宝不想起床
doomsday();
}
}
//侧着睡
class SleepWay1 extends SleepProcess{
public void sleeping(){
System.out.println("我要侧着睡");
System.out.println("敖!搁到肩膀了");
System.out.println("呼呼……");
}
}
//仰着睡
class SleepWay2 extends SleepProcess{
public void sleeping(){
System.out.println("我要仰着睡");
System.out.println("面壁思过ing……");
System.out.println("我在修行,练气,不,已经化神了");
}
}
//我想怎么睡就怎么睡
class SleepWay3 extends SleepProcess{
public void sleeping(){
System.out.println("我想怎么睡就怎么睡");
System.out.println("闭关修炼ing");
System.out.println("嗯哼……好爽");
}
}
package demo.oop.sleep;
import java.util.Scanner;
public class Sleep {
public static void main(String[] args) {
int n = (int)(Math.random()*3+1);
switch(n){
case 1:
SleepProcess slp1 = new SleepWay1();
slp1.beginSleep();
slp1.sleeping();
slp1.doomsday();
case 2:
SleepProcess slp2 = new SleepWay2();
slp2.beginSleep();
slp2.sleeping();
slp2.doomsday();
case 3:
SleepProcess slp3 = new SleepWay3();
slp3.beginSleep();
slp3.sleeping();
slp3.doomsday();
}
}
}
abstract class SleepProcess{
public int n = 0; //你的小羊
public int i; //我是一个小循环
public int myRadom; //随机
@SuppressWarnings("resource")
public void beginSleep(){
System.out.println("哇咔咔,我要睡觉了,我的被窝想我了");
System.out.println("==* 一个被窝和枕头的故事 *== \n");
System.out.print("嗯……数几只羊好呢? ");
//到底几只羊了
myRadom = (int)(Math.random()*5+1);
//你要干什么
Scanner in = new Scanner(System.in);
n = in.nextInt() + myRadom;
for(i=0; i<n; i++){
if(i<n-1){
System.out.print((i+1) + "只羊" + ",");
}else{
System.out.print((i+1) + "只羊…………\n");
}
}
System.out.println("\n(模糊眼)好像不太对,重新数吧。。。");
System.out.println("呼噜噜,呼噜噜Zzzz");
System.out.println("Zzzz");
System.out.println("Zz..");
System.out.println("......\n");
}
//声明睡觉方法
public abstract void sleeping();
@SuppressWarnings("resource")
public void doomsday(){
String answer = ""; //y/n
System.out.println("\n^*)%$@~");
System.out.println("什么?要起床!\n");
System.out.println("#$!/*+#%&");
System.out.println("纳尼,卧槽,什么,世界末日了\n");
System.out.println("…………………………");
System.out.println("可是宝宝还想睡,宝宝不想起床\n");
System.out.print("//*-&(翻译:到底起不起床) y/n: ");
Scanner in = new Scanner(System.in);
answer = in.nextLine();
if(answer.equals("n")){
System.out.println("\n(决心脸)我要睡到天长地久,我要睡到海枯石烂!");
System.out.println("呼噜噜,呼噜噜Zzz..");
System.out.println("...............\n");
System.out.println("嘭!!!!!");
System.out.println("end~ ^_^");
}else{
System.out.println("\n(慌张脸)救命啊,救命啊,世界末日啦!!!");
System.out.println("...............\n");
System.out.println("嘭!!!!!");
System.out.println("end~ ^_^");
}
System.out.println("------------------------------------\n");
return;
}
//睡觉睡觉
public void sleep(){
//开始睡觉啦
beginSleep();
//你想怎么睡就怎么睡
sleeping();
//宝宝不想起床
doomsday();
}
}
//侧着睡
class SleepWay1 extends SleepProcess{
public void sleeping(){
System.out.println("我要侧着睡");
System.out.println("敖!搁到肩膀了");
System.out.println("呼呼……");
}
}
//仰着睡
class SleepWay2 extends SleepProcess{
public void sleeping(){
System.out.println("我要仰着睡");
System.out.println("面壁思过ing……");
System.out.println("我在修行,练气,不,已经化神了");
}
}
//我想怎么睡就怎么睡
class SleepWay3 extends SleepProcess{
public void sleeping(){
System.out.println("我想怎么睡就怎么睡");
System.out.println("闭关修炼ing");
System.out.println("嗯哼……好爽");
}
}
9. 问题9
定义方法
java
package demo.oop.studentMethod;
public class StudentMethod {
//定义变量
public String name; //名字
public String major; //专业
public int age; //年龄
public char sex; //性别
//构造方法,给StudentMethod类赋默认值(初始化)
public StudentMethod(){
name = "Anne"; //名字
major = "IOS"; //专业
age = 3; //年龄
sex = '女';
}
//自我介绍
public void StudentTest(String name, String major, int age, char sex){
System.out.println("大家好!我叫" + name + ",一个乐观的" + sex + "生," + "今年" + age + "岁了,我现在主修的专业是" + major);
}
//主方法(程序入口)
public static void main(String[] args) {
StudentMethod stu1 = new StudentMethod(); //new一个学生对象(实例化一个stu1)
stu1.StudentTest(stu1.name, stu1.major, stu1.age, stu1.sex); //调用自我介绍的方法
StudentMethod stu2 = new StudentMethod(); //new一个学生对象(实例化一个stu1)
stu2.major = "Android"; //给实例化的学生对象的major属性赋值
stu2.sex = '男'; ////给实例化的学生对象的sex属性赋值
stu1.StudentTest(stu1.name, stu2.major, stu1.age, stu2.sex); //调用自我介绍的方法
}
}
package demo.oop.studentMethod;
public class StudentMethod {
//定义变量
public String name; //名字
public String major; //专业
public int age; //年龄
public char sex; //性别
//构造方法,给StudentMethod类赋默认值(初始化)
public StudentMethod(){
name = "Anne"; //名字
major = "IOS"; //专业
age = 3; //年龄
sex = '女';
}
//自我介绍
public void StudentTest(String name, String major, int age, char sex){
System.out.println("大家好!我叫" + name + ",一个乐观的" + sex + "生," + "今年" + age + "岁了,我现在主修的专业是" + major);
}
//主方法(程序入口)
public static void main(String[] args) {
StudentMethod stu1 = new StudentMethod(); //new一个学生对象(实例化一个stu1)
stu1.StudentTest(stu1.name, stu1.major, stu1.age, stu1.sex); //调用自我介绍的方法
StudentMethod stu2 = new StudentMethod(); //new一个学生对象(实例化一个stu1)
stu2.major = "Android"; //给实例化的学生对象的major属性赋值
stu2.sex = '男'; ////给实例化的学生对象的sex属性赋值
stu1.StudentTest(stu1.name, stu2.major, stu1.age, stu2.sex); //调用自我介绍的方法
}
}
10. 问题10
java
/*
* 对象数组
*
* * 我有5个学生,请把这个5个学生的信息存储到数组中,并遍历数组,获取得到每一个学生信息。
* 学生:Student
* 成员变量:name,age
* 构造方法:无参,带参
* 成员方法:getXxx()/setXxx()
* 存储学生的数组?自己想想应该是什么样子的?
* 分析:
* A:创建学生类。
* B:创建学生数组(对象数组)。
* C:创建5个学生对象,并赋值。
* D:把C步骤的元素,放到数组中。
* E:遍历学生数组。
*
*/
// Student.java
package eg.arr.objectArray;
public class Student {
// 成员变量
private String name;
private int age;
// 构造方法
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
// 成员方法
// getXxx()/setXxx()
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;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
// ObjectArray.java
package eg.arr.objectArray;
public class ObjectArray {
public static void main(String[] args) {
// 创建学生数组(对象数组)。
Student[] students = new Student[5];
// for (int x = 0; x < students.length; x++) {
// System.out.println(students[x]);
// }
// System.out.println("---------------------");
// 创建5个学生对象,并赋值。
Student s1 = new Student("张三", 27);
Student s2 = new Student("李四", 30);
Student s3 = new Student("王五", 30);
Student s4 = new Student("刘琪", 60);
Student s5 = new Student("王力", 35);
// 把C步骤的元素,放到数组中。
students[0] = s1;
students[1] = s2;
students[2] = s3;
students[3] = s4;
students[4] = s5;
// 看到很相似,就想循环改
// for (int x = 0; x < students.length; x++) {
// students[x] = s + "" + (x + 1);
// }
// 这个是有问题的
// 遍历
for (int x = 0; x < students.length; x++) {
//System.out.println(students[x]);
Student s = students[x];
System.out.println(s.getName()+"---"+s.getAge());
}
}
}
/**
张三---27
李四---30
王五---30
刘琪---60
王力---35
*/
/*
* 对象数组
*
* * 我有5个学生,请把这个5个学生的信息存储到数组中,并遍历数组,获取得到每一个学生信息。
* 学生:Student
* 成员变量:name,age
* 构造方法:无参,带参
* 成员方法:getXxx()/setXxx()
* 存储学生的数组?自己想想应该是什么样子的?
* 分析:
* A:创建学生类。
* B:创建学生数组(对象数组)。
* C:创建5个学生对象,并赋值。
* D:把C步骤的元素,放到数组中。
* E:遍历学生数组。
*
*/
// Student.java
package eg.arr.objectArray;
public class Student {
// 成员变量
private String name;
private int age;
// 构造方法
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
// 成员方法
// getXxx()/setXxx()
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;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
// ObjectArray.java
package eg.arr.objectArray;
public class ObjectArray {
public static void main(String[] args) {
// 创建学生数组(对象数组)。
Student[] students = new Student[5];
// for (int x = 0; x < students.length; x++) {
// System.out.println(students[x]);
// }
// System.out.println("---------------------");
// 创建5个学生对象,并赋值。
Student s1 = new Student("张三", 27);
Student s2 = new Student("李四", 30);
Student s3 = new Student("王五", 30);
Student s4 = new Student("刘琪", 60);
Student s5 = new Student("王力", 35);
// 把C步骤的元素,放到数组中。
students[0] = s1;
students[1] = s2;
students[2] = s3;
students[3] = s4;
students[4] = s5;
// 看到很相似,就想循环改
// for (int x = 0; x < students.length; x++) {
// students[x] = s + "" + (x + 1);
// }
// 这个是有问题的
// 遍历
for (int x = 0; x < students.length; x++) {
//System.out.println(students[x]);
Student s = students[x];
System.out.println(s.getName()+"---"+s.getAge());
}
}
}
/**
张三---27
李四---30
王五---30
刘琪---60
王力---35
*/
11. 问题11
实例化
java
public class ObjectArray {
private String name;
private int age;
public ObjectArray(String name,int age){
this.name=name;
this.age=age;
}
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 static void main(String[] args) {
//创建1个Demo1对象数组student,包含了3个空间
ObjectArray[] student=new ObjectArray[3];
//实例化对象数组
student[0]=new ObjectArray("张飞",20);
student[1]=new ObjectArray("吴广",10);
student[2]=new ObjectArray("赵云",50);
//循环遍历取得
//student[i]得到的事对象数组
for (int i = 0; i < student.length; i++) {
System.out.println("名字:"+student[i].getName()+"年龄:"+student[i].getAge());
}
}
}
public class ObjectArray {
private String name;
private int age;
public ObjectArray(String name,int age){
this.name=name;
this.age=age;
}
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 static void main(String[] args) {
//创建1个Demo1对象数组student,包含了3个空间
ObjectArray[] student=new ObjectArray[3];
//实例化对象数组
student[0]=new ObjectArray("张飞",20);
student[1]=new ObjectArray("吴广",10);
student[2]=new ObjectArray("赵云",50);
//循环遍历取得
//student[i]得到的事对象数组
for (int i = 0; i < student.length; i++) {
System.out.println("名字:"+student[i].getName()+"年龄:"+student[i].getAge());
}
}
}
12. 问题12
实例化(两个文件) 并排序
java
// student.java
package eg.arr.objectArray_3;
public class Student {
// 成员变量
private String name;
private int age;
// 构造方法
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
// 成员方法
// getXxx()/setXxx()
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;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
//返回Student对象数组(默认学生)
/*public Student[] getStudent() {
Student[] stu = new Student[3];
Student stu1 = new Student("张三", 18);
Student stu2 = new Student("李四", 45);
Student stu3 = new Student("王五", 33);
stu[0] = stu1;
stu[1] = stu2;
stu[2] = stu3;
return stu;
}*/
}
// objectArray
package eg.arr.objectArray_3;
import java.util.Arrays;
import java.util.Comparator;
public class objectArray {
public static void main(String[] args) {
// 创建学生数组(对象数组)。
Student[] stu = new Student[5];
// 创建5个学生对象,并赋值。
Student s1 = new Student("张三", 27);
Student s2 = new Student("李四", 30);
Student s3 = new Student("王五", 80);
Student s4 = new Student("刘琪", 60);
Student s5 = new Student("王力", 35);
// 把C步骤的元素,放到数组中。
stu[0] = s1;
stu[1] = s2;
stu[2] = s3;
stu[3] = s4;
stu[4] = s5;
// 遍历
System.out.println("排序前:");
for(Student s:stu){
System.out.println(s);
}
System.out.println("排序后:");
Arrays.sort(stu, new Comparator<Student>(){
@Override
public int compare(Student s1, Student s2) {
return s2.getAge() - s1.getAge();
}});
for(Student s:stu){
System.out.println(s);
}
}
}
// student.java
package eg.arr.objectArray_3;
public class Student {
// 成员变量
private String name;
private int age;
// 构造方法
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
// 成员方法
// getXxx()/setXxx()
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;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
//返回Student对象数组(默认学生)
/*public Student[] getStudent() {
Student[] stu = new Student[3];
Student stu1 = new Student("张三", 18);
Student stu2 = new Student("李四", 45);
Student stu3 = new Student("王五", 33);
stu[0] = stu1;
stu[1] = stu2;
stu[2] = stu3;
return stu;
}*/
}
// objectArray
package eg.arr.objectArray_3;
import java.util.Arrays;
import java.util.Comparator;
public class objectArray {
public static void main(String[] args) {
// 创建学生数组(对象数组)。
Student[] stu = new Student[5];
// 创建5个学生对象,并赋值。
Student s1 = new Student("张三", 27);
Student s2 = new Student("李四", 30);
Student s3 = new Student("王五", 80);
Student s4 = new Student("刘琪", 60);
Student s5 = new Student("王力", 35);
// 把C步骤的元素,放到数组中。
stu[0] = s1;
stu[1] = s2;
stu[2] = s3;
stu[3] = s4;
stu[4] = s5;
// 遍历
System.out.println("排序前:");
for(Student s:stu){
System.out.println(s);
}
System.out.println("排序后:");
Arrays.sort(stu, new Comparator<Student>(){
@Override
public int compare(Student s1, Student s2) {
return s2.getAge() - s1.getAge();
}});
for(Student s:stu){
System.out.println(s);
}
}
}
13. 问题13
java
/*
* 需求:
* 通过使用对象数组,来完成用户的注册和登陆功能。
*
* 分析:
* note1:初步思路:
* 1,由于使用对象数组,则首先应该有对象。
* 结合题目要求,该对象应具有用户名和密码两个属性。
* 2,利用数组,将对象封装起来,形成存储该结构的容器。
* 3,由于目前只有注册和登陆,故数组的操作中,只需要实现查找和插入的动作。
*/
// UserData
package eg.fn.reglog_1;
public class UserData {
private String username;
private String password;
public UserData() {
}
public UserData(String username, String password) {
super();
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if ((obj != null) && (obj.getClass() == UserData.class)) {
UserData userData = (UserData) obj;
if ((this.getUsername().equals(userData.getUsername()))
&& (this.getPassword().equals(userData.getPassword())))
return true;
}
return false;
}
@Override
public String toString() {
return "UserData [username=" + username + ", password=" + password + "]";
}
}
// UserDataArray
package eg.fn.reglog_1;
public class UserDataArray {
private UserData[] userDatas;
private int userNums;
public UserDataArray() {
}
public UserDataArray(int maxNum) {
userDatas = new UserData[maxNum];
userNums = 0;
}
// 获取用户的注册数
public int getUserNums() {
return userNums;
}
// 增加用户
public void insertUserData(UserData userData) {
userDatas[userNums] = userData;
userNums++;
}
// 查找用户
public boolean findUserData(UserData userData) {
for (int index = 0; index < userNums; index++) {
if (userData.equals(userDatas[index]))
return true;
}
return false;
}
// 显示用户
public void displayUserData() {
for (int index = 0; index < userNums; index++)
System.out.println(userDatas[index].toString());
}
// 删除用户
public boolean deleteUserData(UserData userData) {
int goalPos;
// 先遍历整个数组,获取需要删除的对象的位置
for (goalPos = 0; goalPos < userNums; goalPos++)
if (userData.equals(userDatas[goalPos]))
break;
if (goalPos == userNums)
return false;
else {
for (int i = goalPos; i < userNums; i++)
userDatas[i] = userDatas[i + 1];
userNums--;
return true;
}
}
public static void main(String[] args) {
UserDataArray aa = new UserDataArray();
aa.displayUserData();
}
}
// UserLoginRegisterApp
package eg.fn.reglog_1;
import java.util.Scanner;
public class UserLoginRegisterApp {
public static final int maxUserNums = 3;// 设置最大用户数
@SuppressWarnings("resource")
public static void main(String[] args) {
// 初始化一个长度为3的UserData对象的数组
UserDataArray userDataArray = new UserDataArray(maxUserNums);
while (true) {
System.out.println("欢迎来到乌托邦!");
System.out.println("1.注册\t2.登陆\t3.退出");
System.out.print("请选择你的操作:");
Scanner scUserInput = new Scanner(System.in);
String userOerator = scUserInput.nextLine();
switch (userOerator) {
case "1":// 注册环节
if (userDataArray.getUserNums() == maxUserNums) {
System.out.println("不好意思,注册名额已经注册满了!");
System.out.println("现在将转向主界面!");
} else {
UserData userData = new UserData();
System.out.print("请输入用户名:");
String userName = scUserInput.nextLine();
System.out.print("请输入密码:");
String userPwd = scUserInput.nextLine();
userData.setUsername(userName);
userData.setPassword(userPwd);
if (!userDataArray.findUserData(userData)) {
userDataArray.insertUserData(userData);
System.out.println("恭喜你注册成功!现在请重新登陆下!");
} else {
System.out.println("该用户已存在,请登陆或者更换用户名");
}
System.out.println("现在跳转到主界面。。。。");
}
break;
case "2":// 登陆环节
UserData userData = new UserData();
System.out.print("请输入用户名:");
String userName = scUserInput.nextLine();
System.out.print("请输入密码:");
String userPwd = scUserInput.nextLine();
userData.setUsername(userName);
userData.setPassword(userPwd);
if (userDataArray.findUserData(userData)) {
System.out.println("恭喜登陆成功,开始尽情享受�潘可�活吧!");
System.exit(0);
} else {
System.out.println("用户名和密码不匹配,请重新登陆或注册!");
System.out.println("现在跳转到主界面。。。。");
}
break;
case "3":
System.out.println("你确定要退出么?y or n?");
String userChoose = scUserInput.nextLine();
if ("y".equals(userChoose)) {
System.out.println("既然你决心离去,我也不好挽留!!!");
System.exit(0);
} else {
System.out.println("我知道你是选错了。。。。");
System.out.println("请重新做出你的选择!!!!");
}
break;
default:
System.out.println("你输入了非法字符,我崩溃了!!!!!");
System.exit(-1);
break;
}
}
}
}
/*
* 需求:
* 通过使用对象数组,来完成用户的注册和登陆功能。
*
* 分析:
* note1:初步思路:
* 1,由于使用对象数组,则首先应该有对象。
* 结合题目要求,该对象应具有用户名和密码两个属性。
* 2,利用数组,将对象封装起来,形成存储该结构的容器。
* 3,由于目前只有注册和登陆,故数组的操作中,只需要实现查找和插入的动作。
*/
// UserData
package eg.fn.reglog_1;
public class UserData {
private String username;
private String password;
public UserData() {
}
public UserData(String username, String password) {
super();
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if ((obj != null) && (obj.getClass() == UserData.class)) {
UserData userData = (UserData) obj;
if ((this.getUsername().equals(userData.getUsername()))
&& (this.getPassword().equals(userData.getPassword())))
return true;
}
return false;
}
@Override
public String toString() {
return "UserData [username=" + username + ", password=" + password + "]";
}
}
// UserDataArray
package eg.fn.reglog_1;
public class UserDataArray {
private UserData[] userDatas;
private int userNums;
public UserDataArray() {
}
public UserDataArray(int maxNum) {
userDatas = new UserData[maxNum];
userNums = 0;
}
// 获取用户的注册数
public int getUserNums() {
return userNums;
}
// 增加用户
public void insertUserData(UserData userData) {
userDatas[userNums] = userData;
userNums++;
}
// 查找用户
public boolean findUserData(UserData userData) {
for (int index = 0; index < userNums; index++) {
if (userData.equals(userDatas[index]))
return true;
}
return false;
}
// 显示用户
public void displayUserData() {
for (int index = 0; index < userNums; index++)
System.out.println(userDatas[index].toString());
}
// 删除用户
public boolean deleteUserData(UserData userData) {
int goalPos;
// 先遍历整个数组,获取需要删除的对象的位置
for (goalPos = 0; goalPos < userNums; goalPos++)
if (userData.equals(userDatas[goalPos]))
break;
if (goalPos == userNums)
return false;
else {
for (int i = goalPos; i < userNums; i++)
userDatas[i] = userDatas[i + 1];
userNums--;
return true;
}
}
public static void main(String[] args) {
UserDataArray aa = new UserDataArray();
aa.displayUserData();
}
}
// UserLoginRegisterApp
package eg.fn.reglog_1;
import java.util.Scanner;
public class UserLoginRegisterApp {
public static final int maxUserNums = 3;// 设置最大用户数
@SuppressWarnings("resource")
public static void main(String[] args) {
// 初始化一个长度为3的UserData对象的数组
UserDataArray userDataArray = new UserDataArray(maxUserNums);
while (true) {
System.out.println("欢迎来到乌托邦!");
System.out.println("1.注册\t2.登陆\t3.退出");
System.out.print("请选择你的操作:");
Scanner scUserInput = new Scanner(System.in);
String userOerator = scUserInput.nextLine();
switch (userOerator) {
case "1":// 注册环节
if (userDataArray.getUserNums() == maxUserNums) {
System.out.println("不好意思,注册名额已经注册满了!");
System.out.println("现在将转向主界面!");
} else {
UserData userData = new UserData();
System.out.print("请输入用户名:");
String userName = scUserInput.nextLine();
System.out.print("请输入密码:");
String userPwd = scUserInput.nextLine();
userData.setUsername(userName);
userData.setPassword(userPwd);
if (!userDataArray.findUserData(userData)) {
userDataArray.insertUserData(userData);
System.out.println("恭喜你注册成功!现在请重新登陆下!");
} else {
System.out.println("该用户已存在,请登陆或者更换用户名");
}
System.out.println("现在跳转到主界面。。。。");
}
break;
case "2":// 登陆环节
UserData userData = new UserData();
System.out.print("请输入用户名:");
String userName = scUserInput.nextLine();
System.out.print("请输入密码:");
String userPwd = scUserInput.nextLine();
userData.setUsername(userName);
userData.setPassword(userPwd);
if (userDataArray.findUserData(userData)) {
System.out.println("恭喜登陆成功,开始尽情享受�潘可�活吧!");
System.exit(0);
} else {
System.out.println("用户名和密码不匹配,请重新登陆或注册!");
System.out.println("现在跳转到主界面。。。。");
}
break;
case "3":
System.out.println("你确定要退出么?y or n?");
String userChoose = scUserInput.nextLine();
if ("y".equals(userChoose)) {
System.out.println("既然你决心离去,我也不好挽留!!!");
System.exit(0);
} else {
System.out.println("我知道你是选错了。。。。");
System.out.println("请重新做出你的选择!!!!");
}
break;
default:
System.out.println("你输入了非法字符,我崩溃了!!!!!");
System.exit(-1);
break;
}
}
}
}
14. 问题14
伪登陆
java
// user
package eg.fn.UserManager;
public class User {
private String username;
private String nickname;
private String password;
private int age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public User(String username, String password, String nickname, int age) {
super();
this.username = username;
this.nickname = nickname;
this.password = password;
this.age = age;
}
@Override
public String toString() {
return "User [username=" + username + ", nickname=" + nickname
+ ", password=" + password + ", age=" + age + "]";
}
}
// UserManager
package eg.fn.UserManager;
public class UserManager {
User[] users;
private int nums=0;
public UserManager(int size) {
users = new User[size];
}
public void add(User user) {
//判断数组内存是否有剩余
if(nums>=users.length) {
System.out.println("对不起,用户数据内存已满,无法再添加"+user.getUsername()+"信息!");
return;
}
//判断是否存在该用户数据
User u = this.load(user.getUsername());
if(u!=null) {
System.out.println("对不起,该用户:"+u.getUsername()+"数据已存在!");
return;
}
//添加数据
users[nums] = user;
nums++;
System.out.println("用户:"+user.getUsername()+"数据已添加成功!");
return;
}
public User load(String username) {
for(int i=0;i<nums;i++) {
User u = users[i];
if(username.equals(u.getUsername())) {
return u;
}
}
return null;
}
public void delete(String username) {
int index=-1;
//通过index索引找到需要删除的数组下标值
for(int i=0;i<nums;i++) {
User u = users[i];
if(username.equals(u.getUsername())) {
index=i;
break;
}
}
if(index==-1) {
System.out.println("对不起,要删除的用户:"+username+"不存在!");
return;
}
//从index位置开始,后一个数组元素赋值到前一个数组元素中,最后再将users[nums]=null,nums自减
for(int i=index+1;i<nums;i++) {
users[i-1] = users[i];
}
users[nums-1]=null;
nums--;
System.out.println("用户:"+username+"数据删除成功!");
return;
}
public void add(int pos,User user) {
//首先检查pos是否合法
if(pos<0||pos>=nums) {
System.out.println("对不起,用户"+user.getUsername()+"信息添加位置不正确!");
return;
}
//判断pos是否可以插入,即nums个数据已经存满了就不可以再增加新数据
if(nums>=users.length) {
System.out.println("对不起,内存已满,无法再添加"+user.getUsername()+"信息!");
return;
}
//检查是否已存在user对象
User u = this.load(user.getUsername());
if(u!=null) {
System.out.println("对不起,该用户:"+u.getUsername()+"数据已存在!");
return;
}
for(int i=nums;i>pos;i--) {
//前面有nums>=users.length判断,因此users[nums]空间存在,可以被前面的元素赋值
users[i] = users[i-1];
}
users[pos] = user;
nums++;
System.out.println("用户:"+user.getUsername()+"数据已添加成功!");
return;
}
public void update(User user) {
//检查是否存在该用户数据
User u = this.load(user.getUsername());
if(u==null) {
System.out.println("对不起,该用户:"+user.getUsername()+"数据不存在!");
return;
}
//更新数据
u.setNickname(user.getNickname());
u.setPassword(user.getPassword());
u.setAge(user.getAge());
System.out.println("用户:"+user.getUsername()+"数据已更新成功!");
return;
}
public void login(String username,String password) {
//判断是否存在 username 用户名
User u = this.load(username);
if(u==null) {
System.out.println("用户名:"+username+"不正确,请检查输入!");
return;
}
//判断密码是否正确
if(!password.equals(u.getPassword())) {
System.out.println("密码不正确,请检查输入!");
return;
}
//成功登录系统
System.out.println("欢迎"+username+"登录系统!");
return;
}
public User[] list() {
User[] tus = new User[nums]; //只遍历数组元素中存有有效元素值的数组
for(int i=0;i<nums;i++) {
tus[i] = users[i];
}
return tus;
}
}
// TestUser
package eg.fn.UserManager;
public class TestUser {
public static void main(String[] args) {
UserManager um = new UserManager(5);
um.add(new User("zs","123","张三",24)); //添加信息成功
um.add(new User("ls","123","李四",22)); //添加信息成功
um.add(new User("ls","123","李四",23)); //添加不成功,已存在
um.add(new User("ww","123","王五",21)); //添加信息成功
um.add(new User("zl","123","赵六",21)); //添加信息成功
um.add(new User("zq","123","朱七",22)); //添加信息成功
um.add(new User("S","123","大S",22)); //满员了,添加信息不成功
System.out.println("------分割线------");
um.delete("ls"); //删除ls
um.delete("ls1231"); //提示要删除的用户名不存在
System.out.println("------分割线------");
um.update(new User("S","1234","大S",23)); //提示要更新的用户名不存在
um.update(new User("zq","1234","朱七",23)); //提示zq信息更新成功
System.out.println("------分割线------");
um.login("zs1", "1234"); //提示用户名错误
um.login("zs1", "123412"); //提示用户名错误
um.login("zs", "123412"); //提示密码错误
um.login("zs", "123"); //提示成功登陆系统
um.login("ls", "123"); //用户名不存在,提示错误
System.out.println("------分割线------");
User[] u = um.list();
for(int i=0;i<u.length;i++) {
System.out.println(u[i]);
}
System.out.println("------分割线------");
um.add(1,new User("S","123","大S",22));
um.delete("ww");
um.add(1,new User("Y","123","大Y",22));
um.delete("Y");
um.add(3,new User("s","123","小S",22));
System.out.println("------分割线------");
User[] u2 = um.list();
for(int i=0;i<u2.length;i++) {
System.out.println(u2[i]);
}
}
}
// user
package eg.fn.UserManager;
public class User {
private String username;
private String nickname;
private String password;
private int age;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public User(String username, String password, String nickname, int age) {
super();
this.username = username;
this.nickname = nickname;
this.password = password;
this.age = age;
}
@Override
public String toString() {
return "User [username=" + username + ", nickname=" + nickname
+ ", password=" + password + ", age=" + age + "]";
}
}
// UserManager
package eg.fn.UserManager;
public class UserManager {
User[] users;
private int nums=0;
public UserManager(int size) {
users = new User[size];
}
public void add(User user) {
//判断数组内存是否有剩余
if(nums>=users.length) {
System.out.println("对不起,用户数据内存已满,无法再添加"+user.getUsername()+"信息!");
return;
}
//判断是否存在该用户数据
User u = this.load(user.getUsername());
if(u!=null) {
System.out.println("对不起,该用户:"+u.getUsername()+"数据已存在!");
return;
}
//添加数据
users[nums] = user;
nums++;
System.out.println("用户:"+user.getUsername()+"数据已添加成功!");
return;
}
public User load(String username) {
for(int i=0;i<nums;i++) {
User u = users[i];
if(username.equals(u.getUsername())) {
return u;
}
}
return null;
}
public void delete(String username) {
int index=-1;
//通过index索引找到需要删除的数组下标值
for(int i=0;i<nums;i++) {
User u = users[i];
if(username.equals(u.getUsername())) {
index=i;
break;
}
}
if(index==-1) {
System.out.println("对不起,要删除的用户:"+username+"不存在!");
return;
}
//从index位置开始,后一个数组元素赋值到前一个数组元素中,最后再将users[nums]=null,nums自减
for(int i=index+1;i<nums;i++) {
users[i-1] = users[i];
}
users[nums-1]=null;
nums--;
System.out.println("用户:"+username+"数据删除成功!");
return;
}
public void add(int pos,User user) {
//首先检查pos是否合法
if(pos<0||pos>=nums) {
System.out.println("对不起,用户"+user.getUsername()+"信息添加位置不正确!");
return;
}
//判断pos是否可以插入,即nums个数据已经存满了就不可以再增加新数据
if(nums>=users.length) {
System.out.println("对不起,内存已满,无法再添加"+user.getUsername()+"信息!");
return;
}
//检查是否已存在user对象
User u = this.load(user.getUsername());
if(u!=null) {
System.out.println("对不起,该用户:"+u.getUsername()+"数据已存在!");
return;
}
for(int i=nums;i>pos;i--) {
//前面有nums>=users.length判断,因此users[nums]空间存在,可以被前面的元素赋值
users[i] = users[i-1];
}
users[pos] = user;
nums++;
System.out.println("用户:"+user.getUsername()+"数据已添加成功!");
return;
}
public void update(User user) {
//检查是否存在该用户数据
User u = this.load(user.getUsername());
if(u==null) {
System.out.println("对不起,该用户:"+user.getUsername()+"数据不存在!");
return;
}
//更新数据
u.setNickname(user.getNickname());
u.setPassword(user.getPassword());
u.setAge(user.getAge());
System.out.println("用户:"+user.getUsername()+"数据已更新成功!");
return;
}
public void login(String username,String password) {
//判断是否存在 username 用户名
User u = this.load(username);
if(u==null) {
System.out.println("用户名:"+username+"不正确,请检查输入!");
return;
}
//判断密码是否正确
if(!password.equals(u.getPassword())) {
System.out.println("密码不正确,请检查输入!");
return;
}
//成功登录系统
System.out.println("欢迎"+username+"登录系统!");
return;
}
public User[] list() {
User[] tus = new User[nums]; //只遍历数组元素中存有有效元素值的数组
for(int i=0;i<nums;i++) {
tus[i] = users[i];
}
return tus;
}
}
// TestUser
package eg.fn.UserManager;
public class TestUser {
public static void main(String[] args) {
UserManager um = new UserManager(5);
um.add(new User("zs","123","张三",24)); //添加信息成功
um.add(new User("ls","123","李四",22)); //添加信息成功
um.add(new User("ls","123","李四",23)); //添加不成功,已存在
um.add(new User("ww","123","王五",21)); //添加信息成功
um.add(new User("zl","123","赵六",21)); //添加信息成功
um.add(new User("zq","123","朱七",22)); //添加信息成功
um.add(new User("S","123","大S",22)); //满员了,添加信息不成功
System.out.println("------分割线------");
um.delete("ls"); //删除ls
um.delete("ls1231"); //提示要删除的用户名不存在
System.out.println("------分割线------");
um.update(new User("S","1234","大S",23)); //提示要更新的用户名不存在
um.update(new User("zq","1234","朱七",23)); //提示zq信息更新成功
System.out.println("------分割线------");
um.login("zs1", "1234"); //提示用户名错误
um.login("zs1", "123412"); //提示用户名错误
um.login("zs", "123412"); //提示密码错误
um.login("zs", "123"); //提示成功登陆系统
um.login("ls", "123"); //用户名不存在,提示错误
System.out.println("------分割线------");
User[] u = um.list();
for(int i=0;i<u.length;i++) {
System.out.println(u[i]);
}
System.out.println("------分割线------");
um.add(1,new User("S","123","大S",22));
um.delete("ww");
um.add(1,new User("Y","123","大Y",22));
um.delete("Y");
um.add(3,new User("s","123","小S",22));
System.out.println("------分割线------");
User[] u2 = um.list();
for(int i=0;i<u2.length;i++) {
System.out.println(u2[i]);
}
}
}