前言
这只是我还没系统学java时写的代码,后续还会改的,毕竟有些地方还不是很规范
1 检查密码
题目
代码
其实这个只要有C语言的基础,不需要学太多的java就能写了
import java.util.Scanner;
public class Bnuz_pass{
public static void main(String[] args) {
boolean digit;
Scanner scanner =new Scanner(System.in);
System.out.println("请输入密码");
while (scanner.hasNext()) {
String pass=scanner.nextLine();
int i,to=1,fig=0,to1=0,to2=0;
int length=pass.length();//获取密码的长度
// 将用户输入的密码保存到字符串变量 pass 中,再调用 pass.length() 方法将长度保存到 length 变量
if(length<8) {//长度小于8
System.out.println("NO Password at least 8 digits");
}
else {//长度大于8进入下一轮判断
char[] charArray = pass.toCharArray();
for (i = 0; i <length; i++){
char x=pass.charAt(i);
digit = Character.isDigit(charArray[i]);
// System.out.println(pass.charAt(i));
if(x<='9'&&x>='0') {
to1=1;
}
else if(x<=122&&x>=97) {
to2=1;
}
else if(x<=90&&x>=65) {
to2=1;
}
else {
to=0;
}
}
if(to!=0&&to1==1&&to2==1){
for (i = 0; i <length; i++){
char x=pass.charAt(i);
if(x<='9'&&x>='0') {
fig++;
}
}
if(fig<2) {//数字小于2
System.out.println("NO Password requires two digits");
}
else {
System.out.println("YES");
}
}
else{
System.out.println("NO Password can only consist of characters and numbers");
}
}
}
}
}
改进
题目来源Wejudge#2452,而且上面的代码有点小错
import java.util.Scanner;
public class w2452 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String pass = scanner.nextLine();
int i, fig = 0, ff = 1;
if (pass.length() < 8) {//长度小于8
System.out.println("NO Password at least 8 digits");
} else {//长度大于8进入下一轮判断
for (i = 0; i < pass.length(); i++) {
char x = pass.charAt(i);
if (Character.isDigit(x) || Character.isLetter(x)) {
} else {
ff = 0;
}
if (Character.isDigit(x)) fig++;
}
if (ff == 1) {
if (fig < 2) {
System.out.println("NO Password requires two digits");
} else {
System.out.println("YES");
}
} else {
System.out.println("NO Passwords can only consist of characters and numbers");
}
}
}
scanner.close();
}
}
2 输出学生成绩
题目
写一个学生类,私有成员有学号,姓名,班级,c语言成绩,高数成绩,java成绩,并且实现Comparable接口,从键盘输入学生人数和学生的信息,按照总成绩从大到小输出学生信息;
代码
写这个的时候还没怎么学接口,接口那一块我是直接仿照网上写的
package Comparable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class BNUZ_GradeComparable {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("请输入学生数量(输完请按回车):");
Scanner in = new Scanner(System.in);
int amount = in.nextInt();
BNUZ_StuGrade[] BNUZ = new BNUZ_StuGrade[amount];//创建对象
BNUZ_StuGrade[] BNUZ2 = new BNUZ_StuGrade[amount];//创建对象
for( int i = 0 ; i < amount ; i++ ){
BNUZ[i] = new BNUZ_StuGrade();
System.out.println("请按顺序输入第"+(i+1)+"位学生的学号,姓名,班级,c语言成绩,高数成绩,java成绩(输完请按回车)");
Scanner mess = new Scanner(System.in);
int aa = mess.nextInt();
BNUZ[i].setId(aa);
String q = mess.next();
BNUZ[i].setName(q);
int b = mess.nextInt();
BNUZ[i].setClas(b);
int c = mess.nextInt();
BNUZ[i].setCScore(c);
int d = mess.nextInt();
BNUZ[i].setJavaScore(d);
int e = mess.nextInt();
BNUZ[i].setMathScore(e);
BNUZ[i].add();
}
List<BNUZ_StuGrade> list = new ArrayList<>();
for(int i=0 ; i < amount ; i++ ) {
list.add(BNUZ[i]);
}
System.out.println("依照总分从大到小进行进行排序:");
Collections.sort(list);
int i = 0;
for(BNUZ_StuGrade ss : list) {
BNUZ2[i] = new BNUZ_StuGrade();
BNUZ2[i].setId(ss.getId());
BNUZ2[i].setName(ss.getName());
BNUZ2[i].setClas(ss.getClas());
BNUZ2[i].setCScore(ss.getCScore());
BNUZ2[i].setJavaScore(ss.getJavaScore());
BNUZ2[i].setMathScore(ss.getMathScore());
i++;
}
// for (BNUZ_StuGrade ss : list) {
// System.out.println(ss.getId()+" "+ss.getName()+" "+ss.getClas()+
// " "+ss.getCScore()+" "+ss.getJavaScore()+" "+ss.getMathScore());
// }
for(i = amount-1;i >= 0;i--) {
System.out.println(BNUZ2[i].getId()+" "+BNUZ2[i].getName()+" "+BNUZ2[i].getClas()+
" "+BNUZ2[i].getCScore()+" "+BNUZ2[i].getJavaScore()+" "+BNUZ2[i].getMathScore());
}
}
}
package Comparable;
public class BNUZ_StuGrade implements Comparable<BNUZ_StuGrade>{
private int id;
private String name;
private int clas;//班级
private int cScore;
private int javaScore;
private int mathScore;
private int amount;
public void setId(int a)
{
this.id=a;
}
public int getId()
{
return id;
}
public void setName(String a)
{
this.name=a;
}
public String getName()
{
return name;
}
public void setClas(int a)
{
this.clas=a;
}
public int getClas()
{
return clas;
}
public void setCScore(int a)
{
this.cScore=a;
}
public int getCScore()
{
return cScore;
}
public void setJavaScore(int a)
{
this.javaScore=a;
}
public int getJavaScore()
{
return javaScore;
}
public void setMathScore(int a)
{
this.mathScore=a;
}
public int getMathScore()
{
return mathScore;
}
public int getAmount()
{
return amount;
}
public void add()
{
amount = mathScore + javaScore + cScore;
}
@Override
public int compareTo(BNUZ_StuGrade o) {
// TODO Auto-generated method stub
return this.amount-o.amount;
}
}
3 图形类继承
题目
写一个图形类(抽象类),有获得面积和获得体积的抽象方法,以及颜色是否填充。写一个三角形和圆形还有矩形继承图形类,实现抽象方法。
代码
学长没说要弄一个图形界面,…唉
图形界面的代码是网上copy的[破涕为笑]
package shapes;
import java.util.Scanner;
public class MyPic {
public static void colour() {
System.out.println("是否填充颜色");
System.out.println("1是");
System.out.println("2否");
Scanner in = new Scanner(System.in);
System.out.println("好的");
}
public static void main(String[] args)
{
System.out.println("请输入正三角形,圆形,正方形的面积");
//不是正多边形的话输入面积就难以确定边长,还有,不会填充颜色...图形就没搞颜色了
Scanner in = new Scanner(System.in);
double a,b,c;
a = in.nextDouble();
b = in.nextDouble();
c = in.nextDouble();
colour();
Picture pic = new Picture(400,300);
Circle c1 = new Circle(40,20,(int)Math.sqrt(b/3.14));
Rectangle r1 = new Rectangle(100, 100, (int)Math.sqrt(c), (int)Math.sqrt(c));
Triangle t1 = new Triangle(90, 90, 90+2*(int)Math.sqrt(a/1.73), 90, (90+90+2*(int)Math.sqrt(a/1.73))/2, (int)(1.732*Math.sqrt(a/1.73)));
pic.add(c1);
pic.add(r1);
pic.add(t1);
pic.draw();
}
}
package shapes;
import java.awt.Graphics;
public abstract class Shape {
public abstract void draw(Graphics g);
}
package shapes;
import java.awt.Graphics;
public class Circle extends Shape {
private int x;
private int y;
private int radius;
public Circle(int x, int y, int radius)
{
this.x = x;
this.y = y;
this.radius = radius;
}
@Override
public void draw(Graphics g) {
g.drawOval(x-radius, y-radius, radius*2, radius*2);
}
}
package shapes;
import java.awt.Graphics;
public class Rectangle extends Shape {
private int x;
private int y;
private int width;
private int height;
public Rectangle(int x, int y, int width, int height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
@Override
public void draw(Graphics g) {
g.drawRect(x, y, width, height);
}
}
package shapes;
import java.awt.Graphics;
public class Triangle extends Shape {
private int[] x = new int[3];
private int[] y = new int[3];
public Triangle(int x1, int y1, int x2, int y2, int x3, int y3)
{
x[0] = x1; x[1] = x2; x[2] = x3;
y[0] = y1; y[1] = y2; y[2] = y3;
}
@Override
public void draw(Graphics g) {
g.drawPolygon(x, y, x.length);
}
}
package shapes;
import java.awt.Graphics;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Picture extends JFrame {
private static final long serialVersionUID = 1L;
private int width;
private int height;
private ArrayList<Shape> listShape = new ArrayList<Shape>();
private class ShapesPanel extends JPanel {
private static final long serialVersionUID = 1L;
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for ( Shape s : listShape )
{
s.draw(g);
}
}
}
public void add(Shape s)
{
listShape.add(s);
}
public Picture(int width, int height)
{
add(new ShapesPanel());
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.width = width;
this.height = height;
}
public void draw()
{
setLocationRelativeTo(null);
setSize(width, height);
setVisible(true);
}
}
4 动物园
题目
请根据以下场景进行类建模(画类图)和实现相应代码。
场景如下:
1)假设有一个动物园(Zoo类来实现),动物园名称由用户定义,动物园有好多动物(Animal类);
2)动物园里可以增加动物public void add(Animal animal ) ,和移除动物remove(Animal animal )
3)可以统计动物园中动物园的数量public int count()
4)可以列出动物园里的所有动物。public void listAnimals() ,显示动物的类名和动物名称
5)有多种多样的动物,每只动物都有个名称。动物都会发出叫声 wow()
6)考虑时间关系,假设只有两种动物,分别是老虎(Tiger类)和蛇(Snake类)。老虎和蛇的叫声分别是roaring 和hissing
7)有一个管理员(Manager)来管理动物园。他可以放动物到动物园,也可以从动物园里移除动物。当放入动物的时候,动物会发出自己的声音。叫声的格式:动物名 is 叫声!
8)假设有个Game类,来完成模拟管理园放动物到动物园和从动物园移除动物的工程。参考代码Game中的main方法。
注意:
1)需要完成类图的设计(可以使用powerdesigner)
2)完成代码的编写
3)思考一下,还有什么地方可以更好或者更完善
代码
这个差不多都是自己写的,不过有好几个地方的代码不是很规范,仅仅是能够运行而已
package zoo;
public class Animal {
protected String name;
protected String wow;
public Animal(String name) {
super();
this.name = name;
}
public void print() {
// TODO Auto-generated method stub
System.out.println(this.name+" is "+this.wow);
}
}
package zoo;
import java.util.Scanner;
public class Game {
public static void main(String[] args) {
// TODO Auto-generated method stub
//用户输入动物园名称 管理员名称 老虎名1 老虎名2 蛇名1 蛇名2(名字之间不允许空格)
System.out.println("输入 动物园名称 管理员名称 老虎名1 老虎名2 蛇名1 蛇名2");
Scanner input = new Scanner(System.in);
// while (input.hasNext()) {
// 创建一个动物园
Zoo zoo = new Zoo(input.next());
// 有个管理员
Manager manager = new Manager(input.next());
// 管理刚才创建的动物园
manager.setManage(zoo);
// 创建2只老虎
Animal tiger1 = new Tiger(input.next());
Animal tiger2 = new Tiger(input.next());
// 创建2条蛇
Animal snake1 = new Snake(input.next());
Animal snake2 = new Snake(input.next());
// 管理员将他们放到动物园.每次放动物到动物园时,动物都会发出叫声
//叫声的格式:动物名 is 叫声!
//老虎叫声用roaring,蛇叫声hissing
Zoo.add(tiger1);
Zoo.add(tiger2);
Zoo.add(snake1);
Zoo.add(snake2);
// 查看动物园里有多少动物,和列出所有动物
zoo.print();
zoo.list();
}
}
package zoo;
public class Manager {
public static String name;
public Manager(String next) {
// TODO Auto-generated constructor stub
this.name = next;
}
public void setManage(Zoo zoo) {
// TODO Auto-generated method stub
}
public Object getManage() {
// TODO Auto-generated method stub
return null;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
package zoo;
public class Snake extends Animal {
public Snake(String name) {
// TODO Auto-generated constructor stub
super(name);
this.wow = "hissing";
}
}
package zoo;
public class Tiger extends Animal {
public Tiger(String name) {
// TODO Auto-generated constructor stub
super(name);
this.wow = "roaring";
}
}
package zoo;
import java.util.ArrayList;
public class Zoo {
public static ArrayList<Animal> listAnimals = new ArrayList<Animal>();
private String name;
public Zoo(String next) {
// TODO Auto-generated constructor stub
this.name = next;
}
public static void add(Animal a) {
// TODO Auto-generated method stub
listAnimals.add(a);
}
public static void list() {
for( Animal a : listAnimals) {
a.print();
}
}
public void print() {
System.out.println("欢迎来到"+this.name+"动物园");
System.out.println("我是管理员"+Manager.name);
}
}
5 简易版通讯录
题目
写一个通讯录:
简单版功能要求:
联系人有姓名,性别,电话,邮箱,特点(特点可以有多个) 这些字段。
实现从文件读取联系人的信息,可以查询联系人,可以输入联系人的信息,并且保存到文件。
代码
IO流呀,这个我还真不是很会,需要满足增删查改四个功能,按照网上的代码仿写的,但是有些功能的确查不到,只能自己写…耗时还真有点久,上学前的最后一个晚上搞出来的,像赶DDL一样O(∩_∩)O哈哈~
package NewAddress;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
public class Change {
static void change(String indexstr,String a,String b,
String c,String d,String e) throws Exception {
File file = new File("C:\\Users\\ASUS\\Desktop\\adress.txt");
//根据该字符串,查找其在txt所在的一行,然后替换成新的一行,其它行数据不变
//新的一行
BufferedReader br = new BufferedReader(new FileReader(file));//读文件
StringBuffer bf = new StringBuffer();
String rl = null;//临时的每行数据
while ((rl = br.readLine()) != null) {
// System.out.println(rl.indexOf(indexstr));//打印该字符串是否在此行,是则输出0,否则输出-1
if (rl.indexOf(indexstr) == 0) { //或者!r1.startsWith(indexstr)
bf.append(a+" "+b+" "+c+" "+d+" "+e+"\r\n");
}else {
bf.append(rl+"\r\n");
}
}
br.close();
BufferedWriter out = new BufferedWriter(new FileWriter(file));//写入文件
out.write(bf.toString());//把bf写入文件
out.flush();//一定要flush才能写入完成
out.close();//关闭
}
}
package NewAddress;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
public class Delete{
static void delete(String special) throws Exception{
File file = new File("C:\\Users\\ASUS\\Desktop\\adress.txt");
String rl = null;
StringBuffer bf = new StringBuffer();
BufferedReader br = new BufferedReader(new FileReader(file));
while(( rl = br.readLine()) != null){
rl = rl.trim();
if(rl.indexOf(special) == -1){ //或者!r1.startsWith(special)
bf.append(rl).append("\r\n");
// bf.append(rl).append("\n");
}
}
br.close();
BufferedWriter out = new BufferedWriter(new FileWriter(file));
out.write(bf.toString());
out.flush();
out.close();
}
}
package NewAddress;
import java.io.File;
import java.util.Date;
import java.util.Scanner;
public class Fun {//姓名,性别,电话,邮箱,微信号//功能:新建,查询,删除,列表或者打开文件
static void show() {
System.out.println("============================================");
System.out.println("===============欢迎使用BNUZ通讯录===============");
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("============================================");
}
public static void main(String[] args) {
while(true)
{
show();
Scanner in = new Scanner(System.in);
int a = in.nextInt();
switch(a){
case 1 ://加入联系人
System.out.println("请按格式输入");
System.out.println("姓名 性别 电话 邮箱 微信号");
Scanner a1 = new Scanner(System.in);
People.name = a1.next();
People.sex = a1.next();
People.phone = a1.next();
People.e_mail = a1.next();
People.WeChat = a1.next();
InputFile.input( People.name, People.sex, People.phone,
People.e_mail, People.WeChat);
break;
case 2://查询联系人
System.out.println("请输入姓名");
Scanner b = new Scanner(System.in);
String www = b.next();
NewSeek.fun(www);
break;
case 3://删除联系人
System.out.println("请输入你要删除的联系人的姓名");
Scanner k = new Scanner(System.in);
String wl = k.next();
try {
Delete.delete(wl);
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
break;
case 4://编辑联系人
System.out.println("请输入你要编辑的联系人的姓名");
Scanner r = new Scanner(System.in);
String indexstr = r.next();
System.out.println("请输入你要改动的信息(按照姓名 性别 电话 邮箱 微信号的顺序来改)");
Scanner q = new Scanner(System.in);
String aa = q.next(),bb = q.next();
String cc = q.next(),dd = q.next(),ee = q.next();
try {
Change.change(indexstr,aa,bb,cc,dd,ee);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case 5://列表或者打开txt
List.fun();
break;
default :
System.out.println("--输入格式错误--");
}
System.out.println("--操作成功--");
}
}
}
package NewAddress;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class InputFile {//throw void IOException
static void input (String name,String sex,
String phone,String e_mail,String WeChat) {
File file = new File("C:\\Users\\ASUS\\Desktop\\adress.txt");
FileWriter fw;
try {
fw = new FileWriter(file,true);
// fw.write("123");
fw.write("\r\n");
fw.write(name+" "+sex+" "+phone+" "+ e_mail+" "+WeChat);
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //设置成true就是追加
}
}
package NewAddress;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.Reader;
public class List {
/**
* 功能:Java读取txt文件的内容
* 步骤:1:先获得文件句柄
* 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取
* 3:读取到输入流后,需要读取生成字节流
* 4:一行一行的输出。readline()。
* 备注:需要考虑的是异常情况
* @param filePath
*/
public static void readTxtFile(String filePath){
try {
String encoding="GBK";
File file=new File(filePath);
if(file.isFile() && file.exists()){ //判断文件是否存在
InputStreamReader read = new InputStreamReader(
new FileInputStream(file),encoding);//考虑到编码格式
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
while((lineTxt = bufferedReader.readLine()) != null){
System.out.println(lineTxt);
}
read.close();
}else{
System.out.println("找不到指定的文件");
}
} catch (Exception e) {
System.out.println("读取文件内容出错");
e.printStackTrace();
}
}
static void fun(){
String filePath = "C:\\Users\\ASUS\\Desktop\\adress.txt";
// "res/";
readTxtFile(filePath);
}
}
package NewAddress;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.Reader;
public class NewSeek {
public static void readTxtFile(String filePath,String a){
try {
String encoding="GBK";
File file=new File(filePath);
if(file.isFile() && file.exists()){ //判断文件是否存在
InputStreamReader read = new InputStreamReader(
new FileInputStream(file),encoding);//考虑到编码格式
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
while((lineTxt = bufferedReader.readLine()) != null){
// System.out.println(lineTxt);
if(ThroughIndexOf(lineTxt,a)) {
System.out.println(lineTxt);
}
}
read.close();
}else{
System.out.println("找不到指定的文件");
}
} catch (Exception e) {
System.out.println("读取文件内容出错");
e.printStackTrace();
}
}
static void fun(String a){
String filePath = "C:\\Users\\ASUS\\Desktop\\adress.txt";
// "res/";
readTxtFile(filePath,a);
}
public static boolean ThroughIndexOf(String parent,String child){
int count=0;
int StartIndex=0;
while(parent.indexOf(child,StartIndex)!=-1){
StartIndex = parent.indexOf(child,StartIndex);
StartIndex+=child.length();
count++;
}
// System.out.print("The number of matches is:"+count+"\n");
if(count>0) {
return true;
}
else {
return false;
}
}
}
package NewAddress;
public class People {
static String name;
static String sex;
static String phone;
static String e_mail;
static String WeChat;
}