/**
*@author:楠小弟
*@version:1.0
*/
public class Hello{
public static void main(String[]args){
System.out.println("hello,world!!!");
}
}
是给代码的维护者看的,着重告诉读者为什么这样写,如何修改等。
public class Hello{
public static void main(String[]args){
//此句为了测试是否能正常输出
System.out.println("hello,world!!!");
}
}
DOS:Disk Operating System磁盘操作系统
dir 查看当前目录
dir d:\abc\hello 查看d盘hello的目录
cd /D c: 切换到c盘,/D为命令
cd d:\abc\hello 绝对路径切换
cd ..\..\abc\hello 相对路径切换
cd ..
cd \
tree
创建目录:md
删除目录:rd
拷贝文件:copy
删除文件:del
输入内容到文件:echo
type
剪切:move
1、编写Java的源代码
2、javac 编译,得到对应的 .class 字节码文件
3、java 运行,本质就是把 .class加载到jvm 运行。
变量 是程序的基本组成单位。
变量相当于内存中一个数据存储空间的表示。
可以把变量看作是一个房间的门牌号,通过门牌号可以找到房间,
而通过变量名可以访问到变量(值)。
使用步骤:1》声明变量 2》赋值。
当把具体的数赋值给byte时:
①先判断该数是否在byte范围内,若是就可以。
byte b=1;
byte b1=2;
short s=1;
short s1=b+b1+s;//错
byte b2=b+b1+s;//错
int i=b+b1+s;//正确
算术运算符是对数值类型的变量进行运算的,在java程序中使用的非常多。
a % b = a - a / b * b;
eg:
10 % 3= 10 - 10 / 3 * 3;//结果为:1
-10 % 3= -10 - (-10) / 3 * 3;//结果为:-1
判断符号:
除数为负,结果为负。
//获取键盘输入。注意:别忘记导包:java.util.Scanner
Scanner inp=new Scanner(System.in);
System.out.println("阁下想打印多少行?");
int rowNum=inp.nextInt();//接收要打印的行数
//开始打印想要的行数
for(int i=1;i<=rowNum;i++){
for(int k=1;k<=(rowNum-i);k++){//打印空格
System.out.print(" ");
}
for(int j=1;j<=(2*i-1);j++){//打印*
System.out.print("*");
}
System.out.println();//每次循环换行
}
//2、打印空心等腰三角形
System.out.println("阁下想打印多少行?");
rowNum=inp.nextInt();//接收要打印的行数
//开始打印想要的行数
for(int i=1;i<=rowNum;i++){
for(int k=1;k<=(rowNum-i);k++){//打印空格
System.out.print(" ");
}
for(int j=1;j<=(2*i-1);j++){//打印*
if(j==1 || j==(2*i-1) || i==rowNum){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();//每次循环换行
}
//3、打印菱形
for(int i=1;i<=rowNum;i++){
for(int k=1;k<=(rowNum-i);k++){//打印空格
System.out.print(" ");
}
for(int j=1;j<=(2*i-1);j++){//打印*
System.out.print("*");
}
System.out.println();//每次循环换行
}
//菱形下半部分
for(int i=rowNum-1;i>=1;i--){
for(int k=1;k<=(rowNum-i);k++){//打印空格
System.out.print(" ");
}
for(int j=1;j<=(2*i-1);j++){//打印*
System.out.print("*");
}
System.out.println();//每次循环换行
}
System.out.println("阁下想打印多少行?");
rowNum=inp.nextInt();//接收要打印的行数
//开始打印想要的行数
for(int i=1;i<=rowNum;i++){
for(int k=1;k<=(rowNum-i);k++){//打印空格
System.out.print(" ");
}
for(int j=1;j<=(2*i-1);j++){//打印*
if(j==1 || j==(2*i-1)){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();//每次循环换行
}
for(int i=rowNum-1;i>=1;i--){
for(int k=1;k<=(rowNum-i);k++){//打印空格
System.out.print(" ");
}
for(int j=1;j<=(2*i-1);j++){//打印*
if(j==1 || j==(2*i-1) || i==rowNum){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();//每次循环换行
}
//1)1-100以内的数求和,求出当和第一次大于20的当前数【for+break】
int sum=0;//接收和
liu:for(int i=1;i<=100;i++){
sum+=i;
if(sum>=20){
System.out.println("累加到20的当前数:"+i);
break liu;
}
}
//)实现登录验证,有3次机会,如果用户名为"丁真”,密码"666"提示登录成功,
//否则提示还有几次机会,请使用for+break完成
String name="";
String pwd="";
for(int i=1;i<=3;i++){
System.out.print("请输入用户名:");
name=inp.next();
System.out.print("\n请输入密码:");
pwd=inp.next();
//判断
if(name.equals("丁真") && "666".equals(pwd)){
System.out.println("恭喜【"+name+"】登陆成功!!");
break;
}
//判断是否已经是第三次输错了
if(i==3){
System.out.println("当前用户已被锁定,请稍后再试!!");
}else{
System.out.println("用户名或密码输入有误!还有【"+(3-i)+"】次机会");
}
}
//1、第一题
char []ch=new char[26];
for(int i=0;i<ch.length;i++){//循环26次
ch[i]=(char)('A'+i);//'A'+i 是int,需要强转
}
System.out.println("=======打印如下=====");
for(int i=0;i<ch.length;i++){
System.out.print(ch[i]+" ");
}
//第二题
int [] arr={4,-1,9,10,23};
int max=arr[0];//假定第一个元素为最大值
int maxIndex=0;//索引
for(int i=1;i<arr.length;i++){//从下标1开始遍历
if(arr[i]>max){//如果max 小于 当前元素时
max=arr[i];//把当前元素 赋值给 max
maxIndex=i;//记录当前元素下标
}
}
System.out.println("最大值为:"+max+"最大值的下标为:"+maxIndex);
//1、对数组进行扩容
//对数组 int arr[]={1,2,3};实现扩容操作
int arr[]={1,2,3};//初始数组
int newArr[];//新数组用来扩容使用
char ch=' ';//用来接收用户的选择
int num=0;//用来输入的整数
//使用while循环进行连续增加
do{//当用户不想弄了时结束
System.out.println("数组的数据为:");
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println("\n是否进行扩容?y/n");
ch=inp.next().charAt(0);
//判断
if(ch=='y'){//进行扩容时
System.out.println("请输入要添加的整数:");
num=inp.nextInt();
newArr=new int[arr.length+1];//新数组比旧数组大一个
//把旧数组的数据弄到新数组上
for(int i=0;i<arr.length;i++){
newArr[i]=arr[i];
}
//把用户输入的值赋给新数组
newArr[newArr.length-1]=num;
//把新数组赋给旧数组
arr=newArr;
}else{//退出循环
System.out.println("拜拜了你呢!!");
break;
}
}while(true);
//2、对数组进行缩减
//练习:给定一个数组,int[] arr={1,2,3,4,5,6,7};
//用户可以随意除去数组中任意一个元素,对数组进行缩减
//当数组只剩下一个时,提示不能再缩减,退出程序。
int[] arr={1,2,3,4,5,6,7};//初始数组
int[] newArr;//声明新数组,进行数组的缩减
char ch=' ';//用户的选择
int num=0;//用户缩减的元素
do{
System.out.print("数组的元素如下:");
//遍历数组
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
System.out.println("\n是否进行对数组缩减?y/n");
ch=inp.next().charAt(0);
//判断用户的选择
if(ch=='y'){//确定缩减
int index=0;//用户要缩减元素的下标
boolean flag=false;//用户要缩减的元素是否存在
//判断数组的长度是否大于一
if(arr.length<=1){
System.out.println("数组元素只剩下一个,不能再删减!");;
break;
}
//初始化新数组
newArr=new int[arr.length-1];
//询问用户想缩减哪个元素
System.out.println("要除去哪个元素?");
num=inp.nextInt();
//判断用户输入的元素的下标
for(int i=0;i<arr.length;i++){
if(arr[i]==num){
index=i;
flag=true;
break;//找到后结束循环
}
}
//判断用户输入的元素是否存在
if(flag){//在数组中能找到
int j=0;//用来给新数组当下标
//除去此元素
for(int i=0;i<arr.length;i++){
if(arr[i]==arr[index]){
continue;//此元素出现时跳过
}
//把旧数组数据赋给新数组
newArr[j]=arr[i];
j++;//下标加1
}
//把新数组重新赋给旧数组
arr=newArr;
}else{//不存在
System.out.println("输入的元素不存在!!!");
}
}else{//不缩减,程序结束
System.out.print("拜拜了你呢!!");
break;
}
}while(true);
//冒泡排序
int[]arr={12,5,23,96,20,45,3};//初始数组
int temp=0;//它用来保存临时变量
for(int i=0;i<arr.length-1;i++){//循环6次:arr.length-1
System.out.println("\n====第"+(i+1)+"轮=====");
//当确定好最后一个最大时,就无需再和其判断
for(int j=0;j<arr.length-1-i;j++){
//当前面的元素大于后面的元素时,互换位置
if(arr[j]>arr[j+1]){
temp=arr[j];//临时变量获得前面元素
arr[j]=arr[j+1];//前面元素位置被后面元素替代
arr[j+1]=temp;//后面元素位置被前面元素替代
}
}
//打印每轮的结果
for(int j=0;j<arr.length;j++){
System.out.print(arr[j]+"\t");
}
//判断数组是否是正序的
if(temp<0){
System.out.println("此数组不需要重新搞,");
break;
}
}
//杨辉三角
int[][]arr=new int[10][];//初始化一个为10的二维数组
for(int i=0;i<arr.length;i++){//层数
//动态初始化一维数组
arr[i]=new int[i+1];
//为一维数组赋值
for(int j=0;j<arr[i].length;j++){
//首和尾都是 1
if(j==0 || j==arr[i].length-1){
arr[i][j]=1;
}else{
//根据规律获得的公式
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
//输出数据
System.out.print(arr[i][j]+" ");
}
//每层结束换行
System.out.println();
}
int[]arr={10,12,45,90};//初始数组
int[]newArr=new int[arr.length+1];//用来扩容
int index=-1;//用来确定要插入的位置
int num=23;//要插入的整数
boolean flag=false;//限制条件
//查找下标以及把数据拷贝到newArr数组
for(int i=0,j=0;i<arr.length;i++){
//当要插入的数 第一次遇到大于自己的 就是要插入的位置
if(num<=arr[i] && !flag){//当flag为默认时执行
index=i;//获得当前下标
flag=true;//限制条件为true:下次在遇到大于的数时跳过
j++;//把当前位置空下来留给要插入的数据
}
newArr[j]=arr[i];//赋值
j++;//用来给新数组赋值的下标
}
//判断
if(index<0){//小于0说明要插的数很大,放在最后一个
newArr[newArr.length-1]=num;
}else{//正常赋值
newArr[index]=num;
}
//把新数组重新赋给旧数组
arr=newArr;
System.out.println("插入之后如下:");
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
public class Liu{
public static void main(String[]args){
Person p=new Person();
p.name="jack";
p.age=22;
p.sex="男";
//speak方法
p.speak();
//cal01方法,计算1+n的结果
p.cal01(100);
//getSum方法,计算两数之和
int num=p.getSum(25,45);
System.out.println("两数之和为:"+num);
}
}
class Person{
String name;//姓名
int age;//年龄
String sex;//性别
//speak方法
public void speak(){
System.out.println(name+" 是一个好人");
}
//cal01方法,计算1+2+...+100的结果
public void cal01(int num){
int sum=0;
for(int i=0;i<num;i++){
sum+=num;
}
System.out.println("1+加到"+num+"的结果为:"+sum);
}
//getSum方法,计算两数之和
public int getSum(int num,int num1){
return (num+num1);
}
}
public class Liu{
public static void main(String[]args){
AA a=new AA();
if(a.isOod(-3)){
System.out.println("是个奇数");
}else{
System.out.println("是个偶数");
}
a.printChar(4,4,'#');
}
}
class AA{
//判断一个数是否是奇数
public boolean isOod(int num){
return num%2!=0;
}
//根据行数、列数以及字符打印效果
public void printChar(int row,int col,char c){
for(int i=0;i<row;i++){
for(int j=0;j<col;j++){
System.out.print(c+" ");
}
System.out.println();
}
}
}
public class Three{
public static void main(String[]args){
HspMethods me=new HspMethods();
String n1=me.showScore("男小弟",76.5,56.9);
String n2=me.showScore("毛小妹",76.5,56.9,45.5);
String n3=me.showScore("崔家与",76.5,56.9,78.2,56,86);
System.out.println(n1+"\n"+n2+"\n"+n3);
}
}
class HspMethods{
public String showScore(String name,double ... cjs){
double sum=0;
for(int i=0;i<cjs.length;i++){
sum+=cjs[i];
}
return (name+"有"+cjs.length+"门课,其总成绩为:"+sum);
}
}
public class Three{
public static void main(String[]args){
Person p=new Person();
Person p1=new Person("tom",22);
System.out.println("无参的:【name="+p.name+"--age="+p.age+"】");
System.out.println("有参的:【name="+p1.name+"--age="+p1.age+"】");
}
}
class Person{
String name;
int age;
//将age属性初始值为18
Person(){
age=18;
}
public Person(String pName,int pAge){
name=pName;
age=pAge;
}
}
public class Three{
public static void main(String[]args){
System.out.println("===========one============");
//声明数组
double[]d={23.1,45.2,23.2,65,6};
//创建对象
A01 a=new A01();
//调用方法
double dd=a.maxs(d);
System.out.println("最大值为:"+dd);
System.out.println("===========two============");
String[] strs={"love","tom","lisa","vol"};
A02 a2=new A02();
int index=a2.find("lisa",strs);
System.out.println("目标下标为:"+index);
System.out.println("===========three============");
Book book=new Book();
book.name="小王子黄金版";
book.price=152;
book.updatePrice(book);
System.out.println("此书的最终价格为:"+book.price);
}
}
class A01{
//求最大值的方法
public double maxs(double[] d){
double max=0;
for(int i=0;i<d.length;i++){
if(max<d[i]){
max=d[i];
}
}
return max;
}
}
//2、找下标
class A02{
public int find(String str,String[] strs){
int index=-1;
for(int i=0;i<strs.length;i++){
if(str.equals(strs[i])){
index=i;
break;
}
}
return index;
}
}
//3、实现更改某书的价格
class Book{
String name;
double price;
public void updatePrice(Book b){
if(b.price>150)price=150;
else if(price>100) price=100;
}
}
package com.liu;
/**
* @author 刘sir
*/
public class Test {
public static void main(String[] args) {
Person p = new Person();
p.setName("南校地");
p.setAge(222);
p.setSalary(5000);
System.out.println(p.info());
}
}
class Person {
public String name;
private int age;
private double salary;
public String getName() {
return name;
}
/**
* 在此设置姓名的字段在 2-6个字符之间
*/
public void setName(String name) {
if (name.length() >= 2 && name.length() <= 6) {
this.name = name;
} else {
System.out.println("姓名太长,给定默认值");
this.name = "某某人";
}
}
public int getAge() {
return age;
}
/**
* 年龄在1-120之间
*
* @param age
*/
public void setAge(int age) {
if (age >= 1 && age <= 120) {
this.age = age;
} else {
System.out.println("年龄过大。默认18");
this.age = 18;
}
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
//方法展示
public String info() {
return "姓名:" + getName() + " 年龄:" + getAge() + " 薪资:" + getSalary();
}
}
package com.liu;
/**
* @author 刘sir
*/
public class Test {
public static void main(String[] args) {
Person p = new Person("tom",22,6000);
System.out.println(p.info());
}
}
class Person {
public String name;
private int age;
private double salary;
public Person() {
}
public Person(String name, int age, double salary) {
this.setName(name);
this.setSalary(salary);
this.setAge(age);
}
public String getName() {
return name;
}
/**
* 在此设置姓名的字段在 2-6个字符之间
*/
public void setName(String name) {
if (name.length() >= 2 && name.length() <= 6) {
this.name = name;
} else {
System.out.println("姓名太长,给定默认值");
this.name = "某某人";
}
}
public int getAge() {
return age;
}
/**
* 年龄在1-120之间
*
* @param age
*/
public void setAge(int age) {
if (age >= 1 && age <= 120) {
this.age = age;
} else {
System.out.println("年龄过大。默认18");
this.age = 18;
}
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
//方法展示
public String info() {
return "姓名:" + getName() + " 年龄:" + getAge() + " 薪资:" + getSalary();
}
}
package com.liu;
/**
* @author 刘sir
*/
public class Test {
public static void main(String[] args) {
Account ac=new Account("那空间",22,"123456");
System.out.println(ac.info());
}
}
class Account{
private String name;
private double balance;
private String pwd;
public Account() {
}
public Account(String name, double balance, String pwd) {
this.setBalance(balance);
this.setName(name);
this.setPwd(pwd);
}
public String getPwd() {
return pwd;
}
/**
* 密码必须是6位
* @param pwd
*/
public void setPwd(String pwd) {
if(pwd.length()==6){
this.pwd = pwd;
}else{
System.out.println("密码必须是6位,已设置默认密码");
this.pwd="000000";
}
}
public String getName() {
return name;
}
/**
* 长度为2位3位或4位
* @param name
*/
public void setName(String name) {
if(name.length()>=2 && name.length()<=4){
this.name = name;
}else{
System.out.println("姓名长度在2-4之间,已设置默认值");
this.name="某某人";
}
}
public double getBalance() {
return balance;
}
/**
* 余额必须大于20
* @param balance
*/
public void setBalance(double balance) {
if(balance>20){
this.balance = balance;
}else{
System.out.println("余额必须大于20");
this.balance=20;
}
}
//信息输出
public String info(){
return "姓名:"+getName()+" 余额:"+getBalance()+" 密码:"+getPwd();
}
}
package com.two;
public class Person {
private String name;
private int age;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String say(){
return "姓名:"+name+" 年龄:"+age;
}
}
package com.two;
public class Student extends Person{
private double score;
public Student(String name, int age, double score) {
super(name, age);
this.score = score;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
@Override
public String say() {
return "学生-"+super.say()+" 成绩:"+ score;
}
public void study(){
System.out.println(getName()+"-同学,正在学习~~~");
}
}
package com.two;
public class Teacher extends Person{
private double salary;
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public Teacher(String name, int age, double salary) {
super(name, age);
this.salary = salary;
}
@Override
public String say() {
return "老师-"+super.say()+" 薪水:"+salary;
}
public void teach(){
System.out.println(getName()+"-老师正在教课`~~~");
}
}
package com.two;
public class PloyArray {
public static void main(String[] args) {
Person[]p=new Person[5];
p[0]=new Person("淘米",20);
p[1]=new Student("小明",20,86.5);
p[2]=new Student("小红",20,90.5);
p[3]=new Teacher("赵sir",35,5000);
p[4]=new Teacher("李sir",30,5500);
for (int i = 0; i < p.length; i++) {
System.out.println(p[i].say());
if(p[i] instanceof Teacher){
((Teacher) p[i]).teach();
}else if(p[i] instanceof Student){
((Student) p[i]).study();
}
}
}
}
package com.extendsT;
public class Person {
private String name;
private int age;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String say(){
return "姓名="+name+" 年龄="+age;
}
}
class Student extends Person{
private String id;
private double score;
public Student(String name, int age, String id, double score) {
super(name, age);
this.id = id;
this.score = score;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
@Override
public String say(){
return super.say()+" id="+id+" score="+score;
}
}
class Test{
public static void main(String[] args) {
Person p=new Person("那地方",21);
System.out.println(p.say());
Student s=new Student("看到",21,"1001",98);
System.out.println(s.say());
}
}
public class Test {
public static void main(String[] args) {
Person p=new Person("tom",20,'女');
Person p1=new Person("tom",20,'女');
System.out.println(p.equals(p1));
}
}
class Person {
private String name;
private int age;
private char gender;
/**
* 有参构造
*
* @param name
* @param age
* @param gender
*/
public Person(String name, int age, char gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
/**
* setter和getter方法
*
* @return
*/
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 char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
@Override
public boolean equals(Object obj) {
//当是同一个对象时
if (this == obj) {
return true;
}
//判断类型
if (obj instanceof Person) {
Person p = (Person) obj;
return this.name.equals(p.name) && this.age == p.age && this.gender == p.gender;
}
//类型不同
return false;
}
}
public class Test {
public static void main(String[] args) {
Car bm = new Car("BM");
bm=null;
System.gc();//回收命令
System.out.println("程序结束~~~");
}
}
class Car{
private String name;
public Car(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
protected void finalize() throws Throwable {
System.out.println("销毁汽车:"+name);
System.out.println("释放了某些资源!!!");
}
}
public class LingMoneyOs {
public static void main(String[] args) {
//键盘输入
Scanner inp = new Scanner(System.in);
//循环判断条件
boolean loop = true;
//用来接收用户的选择
String str = "";
//收支记录
String allNote = "\n----------零钱通明细----------";
//收益或支出的金钱
double money;
//总金额
double allMoney = 0;
//时间格式转换
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//消费的项目
String note;
do {
System.out.println("----------零钱通菜单----------");
System.out.println("\t\t1 零钱通明细");
System.out.println("\t\t2 收益入账");
System.out.println("\t\t3 消费");
System.out.println("\t\t4 退 出");
System.out.print("请选择(1-4):");
str = inp.next();
//使用switch来进行判断
switch (str) {
case "1":
System.out.println(allNote);
break;
case "2":
System.out.print("收益金额:");
money = inp.nextDouble();
//校验金额是否合法
if (money <= 0) {
System.out.println("**收益入账金额应大于0!**");
break;
}
//总金额改变
allMoney += money;
//添加记录
allNote += "\n收益入账\t+" + money + "\t" + sdf.format(new Date()) + "\t余额:" + allMoney;
System.out.println("\n~~~~~~~添加欧克~~~~~~~");
break;
case "3":
System.out.print("消费金额:");
money = inp.nextDouble();
System.out.print("消费说明:");
note = inp.next();
//判断消费的金额是否大于自己拥有的
if (money > allMoney || money <= 0) {
System.out.println("**消费金额应在0-" + allMoney + " 之间**");
break;
}
//跟新总钱数
allMoney -= money;
//添加记录
allNote += "\n" + note + "\t-" + money + "\t" + sdf.format(new Date()) + "\t余额:" + allMoney;
System.out.println("\n~~~~~~~添加欧克~~~~~~~");
break;
case "4":
//用来接收用户的选择
char isTui;
while (true) {
System.out.print("确定要退出吗?y/n:");
isTui = inp.next().charAt(0);
if ('y' == isTui || 'n' == isTui) {
break;
}
}
//判断
if ('y' == isTui) {
loop = false;
} else if ('n' == isTui) {
loop = true;
}
break;
default:
System.out.println("输入有误,请重新选择!!");
}
} while (loop);
System.out.println("-----感谢你使用零钱通系统,期待你的下次光临!-----");
}
}
/**
* @author nan
* 使用oop方式
*/
public class LingMoneyOsOop {
Scanner inp=new Scanner(System.in);
//循环判断条件
boolean loop = true;
//用来接收用户的选择
String str = "";
//收支记录
String allNote = "\n----------零钱通明细----------";
//收益或支出的金钱
double money;
//总金额
double allMoney = 0;
//时间格式转换
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//消费的项目
String note;
/**
* 菜单
*/
public void showMenu(){
do {
System.out.println("----------零钱通菜单----------");
System.out.println("\t\t1 零钱通明细");
System.out.println("\t\t2 收益入账");
System.out.println("\t\t3 消费");
System.out.println("\t\t4 退 出");
System.out.print("请选择(1-4):");
str = inp.next();
//使用switch来进行判断
switch (str) {
case "1":
this.info();
break;
case "2":
this.getMoney();
break;
case "3":
this.giveMoney();
break;
case "4":
this.goOut();
break;
default:
System.out.println("输入有误,请重新选择!!");
}
} while (loop);
System.out.println("-----感谢你使用零钱通系统,期待你的下次光临!-----");
}
/**
* 零钱通明细
*/
public void info(){
System.out.println(allNote);
}
/**
* 收益入账
*/
public void getMoney(){
System.out.print("收益金额:");
money = inp.nextDouble();
//校验金额是否合法
if (money <= 0) {
System.out.println("**收益入账金额应大于0!**");
return;
}
//总金额改变
allMoney += money;
//添加记录
allNote += "\n收益入账\t+" + money + "\t" + sdf.format(new Date()) + "\t余额:" + allMoney;
}
/**
* 消费
*/
public void giveMoney(){
System.out.print("消费金额:");
money = inp.nextDouble();
System.out.print("消费说明:");
note = inp.next();
//判断消费的金额是否大于自己拥有的
if (money > allMoney || money <= 0) {
System.out.println("**消费金额应在0-" + allMoney + " 之间**");
return;
}
//跟新总钱数
allMoney -= money;
//添加记录
allNote += "\n" + note + "\t-" + money + "\t" + sdf.format(new Date()) + "\t余额:" + allMoney;
}
/**
* 退出
*/
public void goOut(){
//用来接收用户的选择
char isTui;
while (true) {
System.out.print("确定要退出吗?y/n:");
isTui = inp.next().charAt(0);
if ('y' == isTui || 'n' == isTui) {
break;
}
}
//判断
if ('y' == isTui) {
loop = false;
} else if ('n' == isTui) {
loop = true;
}
}
}
class Test{
public static void main(String[] args) {
new LingMoneyOsOop().showMenu();
}
}
学习路上肯定会有很多艰难险阻,
但这并不可怕,
让我们时时牢记h自己的初心是什么?
虽然现在自己的技术非常小白,
但这不能代表一直就是这样,
老韩的座右铭挺好的:我亦无他,惟手熟尔--《卖油翁》
加油吧,伙计,
也许现在你麻木了,但不要放弃,重新挑起自己的热爱,
昨日已经过去,无法回去;
明日尚未来到,无法预测;
今日正在逝去,把握当下。
今日的光景,是过去的结果,
未来想要更多机会,乃在乎现在的选择,
既然自己想要丰富自己,就从现在当下开始吧,
把握不住当下,也就把握不住未来;
今天如何选择,明日就会有不一样的结果,
今日种的因,明日就要吃其结的果....
勇于逃离自我辖制,自己有很大潜力,
勇敢去闯吧,不要被恐惧吓住,
不论什么事,就大胆尝试(不是犯罪的事),
无论结果如何,至少不留遗憾了。
public class Test05 {
public static void main(String[] args) {
Week[] values = Week.values();
System.out.println("==所有星期的信息如下==");
for (Week w:values){
//这里使用getName()获取,也可使用重写toString方法返回name
System.out.println(w.getName());
}
}
}
enum Week{
MONDAY("星期一"),TUESDAY("星期二"),WEDNESDAY("星期三"),THURSDAY("星期四"),
FRIDAY("星期五"),SATURDAY("星期六"),SUNDAY("星期日");
private String name;
Week(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
/**
定制排序
*/
public class Test01 {
public static void main(String[] args) {
int[] arr={-1,-8,3,9,1,7};
//调用自排序方法
selfCompare(arr, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
int a= (int) o1;
int b= (int) o2;
return b-a;
}
});
//输出排序好的数组
for (int a :arr) {
System.out.println(a);
}
}
/**
* 自排序数组
* @param arr
* @param c
*/
public static void selfCompare(int[]arr, Comparator c){
int temp;
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-1-i; j++) {
if (c.compare(arr[j],arr[j+1])>0){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}
public class Test01 {
public static void main(String[] args) {
Book[] books = new Book[4];
books[0] = new Book("红楼梦", 100);
books[1] = new Book("金瓶梅新", 90);
books[2] = new Book("青年文摘20年版", 10);
books[3] = new Book("java从入门到大神", 300);
//进行排序
//按price排序
Arrays.sort(books, new Comparator<Book>() {
@Override
public int compare(Book o1, Book o2) {
Book b1=o1;
Book b2=o2;
double result= b2.getPrice()- b1.getPrice();
if(result>0) {
return -1;
}else if(result <0){
return 1;
}else {
//两数相等时
return 0;
}
}
});
//按书名长度
Arrays.sort(books, new Comparator<Book>() {
@Override
public int compare(Book o1, Book o2) {
Book b1=o1;
Book b2=o2;
return b1.getName().length()-b2.getName().length();
}
});
//打印最后结果
for (Book b:books){
System.out.println(b);
}
}
}
class Book {
private String name;
private double price;
public Book(String name, double price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
}
public class Test03 {
public static void main(String[] args) {
//测试数据
String str = "abcdef";
System.out.println("====测试前数据=====");
System.out.println(str);
try {
str = reverse(str, 10, 4);
} catch (Exception e) {
System.out.println(e.getMessage());
return;
}
System.out.println("====交换后====");
System.out.println(str);
}
public static String reverse(String str, int start, int end) {
//做个验证环节,防止一些因操作带来异常
if (!(str != null && start >= 0 && end >= 0 && str.length() > 0 && start < str.length() && end < str.length())) {
throw new RuntimeException("请检查输入的参数,貌似又不恰当的地方....");
}
//把字符串转换为char数组
char[] chars = str.toCharArray();
//辅助变量
char temp;
for (int i = start, j = end; i < j; i++, j--) {
temp = chars[i];
chars[i] = chars[j];
chars[j] = temp;
}
//使用chars重新构建一个String
return new String(chars);
}
}
public class Test04 {
public static void main(String[] args) {
String name="tom";
String pwd="123456";
String email="[email protected]";
try {
userRegister(name,pwd,email);
System.out.println("注册OK啦!");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
/**
* 用户注册方法
*
* @param name 姓名
* @param pwd 密码
* @param email 邮箱
*/
public static void userRegister(String name, String pwd, String email) {
// 第一步:判断参数是否为空
if (!(name != null && pwd != null && email != null)) {
throw new RuntimeException("本次注册的各个信息不能为空!!");
}
//第二步:判断姓名
if (!(name.length() >= 0 && name.length() <= 4)) {
throw new RuntimeException("姓名长度应在【2,4】,你输入的姓名不符合【" + name.length() + "】");
}
//第三步:判断密码
if (!(pwd.length() == 6 && isNum(pwd))) {
throw new RuntimeException("密码必须是6位且都是数字!!");
}
//第四步:判断邮箱
int e = email.lastIndexOf("@");
int e1 = email.lastIndexOf(".");
if (!(e > 0 && e1 > e)) {
throw new RuntimeException("邮箱中必须存在@和.且@在.前面!!");
}
}
/**
* 判断密码中是否都是数字
* @param pwd
* @return true:都为数字;反之false
*/
public static boolean isNum(String pwd) {
//把字符串转换为char数组
char[] chars = pwd.toCharArray();
for (int i = 0; i < chars.length; i++) {
if ((chars[i] < '0' || chars[i] > '9')) {
return false;
}
}
return true;
}
}
public class Test06 {
public static void main(String[] args) {
String str="abcABHHJ123楠小弟";
numsOfWord(str);
}
public static void numsOfWord(String str){
if(str==null){
System.out.println("不能为空!!");
return;
}
char[] chars = str.toCharArray();
//大写字母个数
int dn=0;
//小写字母个数
int xn=0;
//数字个数
int nn=0;
//其他数字
int other=0;
for (int i = 0; i < chars.length; i++) {
if(chars[i]>='A'&&chars[i]<='Z'){
dn++;
}else if(chars[i]>='a'&&chars[i]<='z'){
xn++;
}else if(chars[i]>='0'&&chars[i]<='9'){
nn++;
}else{
other++;
}
}
System.out.println("大写字母有:"+dn);
System.out.println("小写字母有:"+xn);
System.out.println("其他字符有:"+other);
System.out.println("数字有:"+nn);
}
}
--参考答案
public class Test01 {
public static void main(String[] args) {
List<Employee> list=new ArrayList<>();
//添加数据
list.add(new Employee("tom",55000,new MyDate(2000,4,22)));
list.add(new Employee("lisa",45000,new MyDate(1998,8,21)));
list.add(new Employee("lisa",45000,new MyDate(1998,8,10)));
System.out.println("=====排序前====");
System.out.println(list);
//进行排序
list.sort(new Comparator<Employee>() {
@Override
public int compare(Employee e1, Employee e2) {
//先判断是否属于这个类型
if(!(e1 instanceof Employee && e2 instanceof Employee)){
System.out.println("类型不正确!!");
return 0;
}
//这里开始比对姓名
int i = e1.getName().compareTo(e2.getName());
if(i!=0){
return i;
}
//姓名相同:这里开始比较生日,MyDate类实现Comparable类
return e1.getBirthday().compareTo(e2.getBirthday());
}
});
System.out.println("=====排序后======");
System.out.println(list);
}
}
class Employee{
private String name;
private double price;
private MyDate birthday;
public Employee(String name, double price, MyDate birthday) {
this.name = name;
this.price = price;
this.birthday = birthday;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public MyDate getBirthday() {
return birthday;
}
public void setBirthday(MyDate birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "\nEmployee{" +
"name='" + name + '\'' +
", price=" + price +
", birthday=" + birthday +
'}';
}
}
class MyDate implements Comparable<MyDate>{
private int year;
private int month;
private int day;
public MyDate(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
@Override
public String toString() {
return "MyDate{" +
"year=" + year +
", month=" + month +
", day=" + day +
'}';
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
@Override
public int compareTo(MyDate o) {
//当年不一样是
int y = year - o.getYear();
if(y!=0){
return y;
}
//当年相同时,判断月
int mo = month - o.getMonth();
if(mo!=0){
return mo;
}
//当年月都相同时,比较日
return day - o.getDay();
}
}
public class PannelTest extends JFrame {
private MyPanel mp = null;
public static void main(String[] args) {
new PannelTest();
}
public PannelTest() {
mp = new MyPanel();
//添加画板
this.add(mp);
//设置窗口大小
this.setSize(400, 400);
//设置title
this.setTitle("画一个圆");
//设置点击❌号结束运行
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体可显示
this.setVisible(true);
}
}
class MyPanel extends Panel {
@Override
public void paint(Graphics g) {
super.paint(g);
//画出一个圆形
g.drawOval(10, 10, 50, 50);
}
}
public class TestLister extends JFrame {
MyPanel my = null;
public static void main(String[] args) {
new TestLister();
}
public TestLister() {
my = new MyPanel();
//添加画板
this.add(my);
//设置窗体大小
this.setSize(400, 400);
//设置点击叉号关闭
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置不可最大化
this.setResizable(false);
//设置窗体可显示
this.setVisible(true);
//添加画板监听器
this.addKeyListener(my);
}
}
class MyPanel extends Panel implements KeyListener {
int x = 10, y = 10;
@Override
public void paint(Graphics g) {
super.paint(g);
//画一个圆形
g.fillOval(x, y, 30, 30);
}
/**
* 监听键盘输出字符
*
* @param e
*/
@Override
public void keyTyped(KeyEvent e) {
}
/**
* 监听键盘按下的按键
*
* @param e
*/
@Override
public void keyPressed(KeyEvent e) {
System.out.println("按下了:" + e.getKeyChar());
//按下 上下左右键时开始添加事件
if(e.getKeyCode()==KeyEvent.VK_DOWN){
y++;
}else if(e.getKeyCode()==KeyEvent.VK_UP){
y--;
}else if(e.getKeyCode()==KeyEvent.VK_LEFT){
x--;
}else if(e.getKeyCode()==KeyEvent.VK_RIGHT){
x++;
}
//重绘画板
this.repaint();
}
/**
* 监听松开键盘
*
* @param e
*/
@Override
public void keyReleased(KeyEvent e) {
}
}
@Test
public void test01(){
Runtime runtime = Runtime.getRuntime();
//获取cpu个数
int i = runtime.availableProcessors();
System.out.println("此电脑拥有cpu有"+i+" 个");
}
public class TestExce {
public static void main(String[] args) throws InterruptedException {
Thread t = new Thread(new Hello());
for (int i = 1; i <= 10; i++) {
System.out.println("hi"+i);
if(i==5){
t.start();
t.join();
System.out.println("子线程结束.....");
}
Thread.sleep(1000);
}
System.out.println("主线程结束...");
}
}
class Hello implements Runnable{
@Override
public void run() {
for (int i = 1; i <=10 ; i++) {
System.out.println("hello"+i);
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class TestExce {
public static void main(String[] args) throws InterruptedException {
Ticket t = new Ticket();
new Thread(t).start();
new Thread(t).start();
new Thread(t).start();
}
}
class Ticket implements Runnable{
private boolean loop=true;
private int num=100;
//下面代码块为方法同步
private synchronized void sell(){
//代码块同步
// synchronized(同步的类){
//下面的方法,填其中
//}
if (num<=0){
System.out.println("票已卖完!!");
loop=false;
return;
}
System.out.println(Thread.currentThread().getName()+" 卖了一张票,剩余:"+(--num));
//休眠一段时间
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
public void run() {
while (loop){
sell();
}
}
}
public class ThreadTest {
public static void main(String[] args) {
A a = new A();
B b = new B(a);
a.start();
b.start();
}
}
class A extends Thread {
private boolean flag=true;
@Override
public void run() {
while (flag){
System.out.println((int) (Math.random()*100)+1);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void setFlag(boolean flag) {
this.flag = flag;
}
}
class B extends Thread{
private A a;
private Scanner inp=new Scanner(System.in);
public B(A a){
this.a=a;
}
@Override
public void run() {
while (true){
System.out.println("请输入Q来结束");
if(inp.next().equalsIgnoreCase("Q")){
//以通知方式结束a进程
a.setFlag(false);
System.out.println("B线程已退出");
break;
}
}
}
}
public class ThreadTest02 {
public static void main(String[] args) {
Card card = new Card();
User u1 = new User(" 小虎", card);
User u2 = new User(" 小白", card);
u1.start();
u2.start();
}
}
/**
* 模拟银行卡
*/
class Card {
private static int money = 10000;
public int getMoney() {
return money;
}
public void setMoney(int money) {
Card.money = money;
}
}
/**
* 模拟用户
*/
class User extends Thread {
private String name;
public Card card;
public User(String name, Card card) {
this.name = name;
this.card = card;
}
@Override
public void run() {
while (true) {
//同步代码块:同步的是card对象
synchronized (card) {
if (card.getMoney() < 1000) {
System.out.println("余额不足。目前剩余:" + card.getMoney());
break;
}
card.setMoney(card.getMoney() - 1000);
System.out.println(name + "取走1000,当前剩余:" + card.getMoney());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
个人代码中未实现的功能:
1、没有解决坦克重叠问题
2、没添加音乐
3、没有菜单
4、不能暂停....
ServerSocket serverSocket=new ServerSocket(9999);
System.out.println("在段口9999进行监听......");
//获取客户
Socket socket = serverSocket.accept();
//获取客户端发来的图片
InputStream is = socket.getInputStream();
BufferedInputStream bis=new BufferedInputStream(is);
//把文件保存到指定路径
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("src\\t.gif"));
//使用包装方法把文件全部读取后返回byte数组
byte[] bytes = StreamUtilsTools.streamToByteArray(bis);
//开始保存数据
bos.write(bytes);
bos.close();
System.out.println("从客户端获取到了图片");
//给客户端发送数据
OutputStream os = socket.getOutputStream();
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(os,"utf8"));
bw.write("收到图片!");
bw.newLine();//结束标识
bw.flush();
//关闭
bw.close();
bis.close();
socket.close();
serverSocket.close();
Socket socket=new Socket("127.0.0.1",9999);
//发送图片数据
BufferedOutputStream bos=new BufferedOutputStream(socket.getOutputStream());
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("e:\\1.gif"));
//获取文件
byte[] bytes = StreamUtilsTools.streamToByteArray(bis);
//发送文件
bos.write(bytes);
bis.close();
//结束标识
socket.shutdownOutput();
//接收从服务器发来的信息
InputStream is = socket.getInputStream();
String s = StreamUtilsTools.streamToString(is);
System.out.println("从服务器接收的信息:"+s);
//关闭
bos.close();
socket.close();
/**
* 功能:将输入流转换为byte数组,即可以把文件的内容读入到byte中
* @param is
* @return
* @throws IOException
*/
public static byte[]streamToByteArray(InputStream is) throws IOException {
//创建输出流对象
ByteArrayOutputStream bos=new ByteArrayOutputStream();
int len;
//字节数组
byte[]buff=new byte[1024];
//循环读取
while ((len=is.read(buff))!=-1){
//把读取的数据写入bos中
bos.write(buff,0,len);
}
bos.close();
return bos.toByteArray();
}
/**
* 功能:将InputStream转换为String
* @param is
* @return
* @throws IOException
*/
public static String streamToString(InputStream is) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(is,"utf8"));
StringBuilder sb=new StringBuilder();
String len;
while ((len=br.readLine())!=null){
sb.append(len+"\r\n");
}
return sb.toString();
}
public class HomeWork02 {
public static void main(String[] args) throws Exception {
Class<?> aClass = Class.forName("java.io.File");
//获取file类的所有构造器
Constructor<?>[] allCon = aClass.getDeclaredConstructors();
for (Constructor<?> constructor : allCon) {
System.out.println("构造器:"+constructor);
}
System.out.println("==================================");
//通过构造器创建
Constructor<?> con = aClass.getConstructor(String.class);
//实例化对象
Object o1 = con.newInstance("e:\\nanxiaodi.txt");
//获取创建文件方法
Method me = aClass.getMethod("createNewFile");
Object invoke = me.invoke(o1);
System.out.println("创建欧克?"+invoke);
}
}