StringBuffer_Math_File
StringBuffer
可变长字符串
有需要频繁进行字符串拼接的时候,用StringBuffer,如果你只要一个字符串,给StringBuffer对象转换成String就可以了
append(参数):在字符串后面追加内容
StringBuffer strb = new StringBuffer();
strb.append("张三");
strb.append(123);
System.out.println(strb);
//字符串的转换
String s = strb.toString();
String s1 = String.valueOf(strb);
Math
java.lang.Math类提供各种用于数学计算的方法
Random():返回0.0 ~ 1.0 之间的一个随机数
还有一个Random类,可以自定义产生多少区间的随机数
System.out.println(Math.random());
Random r = new Random();
System.out.println(r.nextInt(100));
随机数小游戏
package com.yfzy.math;
import java.util.Scanner;
import java.util.Random;
public class TestMath {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random r = new Random();
int num = r.nextInt(100);
int num2 =0;
while(num != num2){
System.out.print("请输入你猜的数字:");
num2 = scanner.nextInt();
if(num2 < num){
System.out.println("猜小了");
}else if(num2 == num){
System.out.println("恭喜你猜中了!随机数为:"+ num);
}else{
System.out.println("猜大了");
}
}
}
}
基本数据类型包装类
java 为每一个基本数据类型都提供了一个相对应的类
常用方法:parseXXX(),可以将字符串转换成相应的基本数据类型
自动打包:自动将基本数据类型的数据转换成相对应包装类的对象
自动解包:自动将包装类对象转换成相应基本数据类型的数值
Integer in = new Integer(5);
Integer i = 5;
//自动打包,就等于
//Integer i = Integer.valueOf(5);
int a = new Integer(5);
//自动解包,就等于
//int a = new Integer(5).valueOf();
String s = "123";
//前提是这个s字符串,是这种纯数字的形式,如果不是,就会报错
int b = Integer.parseInt(s);
File
java.io.File 类提供了各种对文件进行操作的方法
一个File类的对象表示一个路径 , 但这个路径未必真实存在
separator属性:返回当前操作系统下的路径分隔符

这里面的File parent父路径,就相当于下面这个D : \File\File.txt 的"D : \File" 这一部分,然后child,就是他的文件名File.txt这部分,然后Pathname就是全的一部分
File类的一些方法

在java中,他的文件夹是文件夹,文件是文件,不能直接创建一个 D : \File\File.txt,需要分别创建 ,先创建文件夹,然后再创建文件
如何创建一个文件和他的父文件
File file = new File("D:\\File\\File.txt");
String sep = File.separator; // 运行值为 路径分隔符,windows的为 \
// String path = "D:"+ sep +"File"+sep+"File.txt";
if(file.exists()){
System.out.println("存在");
}else{
System.out.println("不存在");
File path = file.getParentFile();
path.mkdirs();
try {
file.createNewFile();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
先使用 getParentFile获取他的父目录,然后mkdirs是创建他的父目录,不是只创建一个文件夹,然后创建完父目录,再createNewFile创建文件
package com.yfzy.FileClass;
import java.io.File;
public class TestFile2 {
public static void main(String[] args) {
File root = new File("D:\\Test");
loadFile(root,0);
}
public static void loadFile(File file,int level){
String space = "";
for(int i =0;i <level;i++){
space += " ";
}
File[] fs = file.listFiles();
for(int i = 0;i < fs.length;i++){
File f = fs[i];
System.out.println(space+f.getName());
if(f.isDirectory()){
loadFile(f,level + 1);
}
}
}
}
小测验
基于控制台的ATM银行
package com.fyzy.project;
public class AccountTest {
private String id;
private String name;
private String password;
private double money;
public AccountTest(String id, String name, String password, double money) {
this.id = id;
this.name = name;
this.password = password;
this.money = money;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "AccountTest{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", password='" + password + '\'' +
", money=" + money +
'}';
}
}
package com.fyzy.project;
import java.util.ArrayList;
import java.util.Scanner;
public class TestBankManager {
private static ArrayList<AccountTest> accountTests = new ArrayList<>();
private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("欢迎来到ATM银行");
while (true){
showHome();
System.out.print("请对照你的要求输入数字:");
int choose = scanner.nextInt();
switch (choose){
case 1:
openAccount(accountTests);
break;
case 2:
login(accountTests);
break;
case 3:
System.out.println("使用完毕,即将退出");
scanner.close();
return;
default:
System.out.println("请输入正确的数字:");
}
}
}
private static void showHome(){
System.out.println("1.开户");
System.out.println("2.登陆");
System.out.println("3.退出");
}
private static void openAccount(ArrayList<AccountTest> accountTests) {
int money = 0;
System.out.print("请输入你的姓名");
String name1 = scanner.next();
System.out.print("请输入你的密码:");
String password1 = scanner.next();
String cartId = String.valueOf((int)((Math.random()*900000)+100000));
System.out.println("你的卡号为:"+cartId);
AccountTest acc =new AccountTest(cartId,name1,password1,money);
accountTests.add(acc);
System.out.println("开户成功");
}
private static void login(ArrayList<AccountTest> accountTests) {
System.out.print("请输入你的卡号:");
String cartId = scanner.next();
System.out.print("请输入你的密码:");
String password = scanner.next();
boolean flag = false;
for(AccountTest acc : accountTests){
if(acc.getId().equals(cartId) && acc.getPassword().equals(password)){
System.out.println("登陆成功 ");
userManager(acc);
flag = true;
break;
}
}
if(!flag){
System.out.println("登陆失败,卡号或密码错误");
}
}
private static void userManager(AccountTest acc){
while (true){
showUser();
System.out.print("请根据要求选择数字:");
int choose = scanner.nextInt();
switch (choose){
case 1:
System.out.println("当前余额为:"+acc.getMoney());
break;
case 2:
System.out.print("请输入存入的数量:");
double manymoney = scanner.nextDouble();
if(manymoney<=0){
System.out.println("必须输入正数");
break;
}
acc.setMoney(acc.getMoney()+manymoney);
System.out.println("剩余余额为:"+ acc.getMoney());
break;
case 3:
System.out.print("请输入取出的数量");
double fewmoney = scanner.nextDouble();
if(fewmoney <=0){
System.out.println("请输入正数");
break;
} else if (fewmoney > acc.getMoney()) {
System.out.println("余额不足");
break;
} else{
acc.setMoney(acc.getMoney()-fewmoney);
System.out.println("剩余余额为:"+ acc.getMoney());
}
break;
case 4:
transfer(accountTests,acc);
break;
case 5:
updatePassword(acc);
break;
case 6:
System.out.println("使用完毕,即将退出");
return;
default:
System.out.println("请输入正确的数字:");
}
}
}
private static void showUser(){
System.out.println("1.查询余额");
System.out.println("2.存钱");
System.out.println("3.取钱");
System.out.println("4.转账");
System.out.println("5.修改密码");
System.out.println("6.退出登陆");
}
private static void transfer(ArrayList<AccountTest> accountTests,AccountTest acc) {
AccountTest targer = null;
System.out.print("请输入对方的卡号:");
String targetCardId = scanner.next();
if(targetCardId.equals(acc.getId())){
System.out.println("不能转账给自己");
return;
}
for(AccountTest a : accountTests){
if(a.getId().equals(targetCardId)){
targer = a;
break;
}
}
if(targer == null){
System.out.println("对方账户不存在");
return;
}
System.out.print("请输入转账金额:");
double transfermoney = scanner.nextDouble();
if(transfermoney > acc.getMoney()){
System.out.println("余额不足");
} else if (transfermoney<=0) {
System.out.println("必须输入正数");
return;
} else{
acc.setMoney(acc.getMoney() - transfermoney);
targer.setMoney(targer.getMoney() + transfermoney);
System.out.println("转账成功");
}
}
private static void updatePassword(AccountTest acc){
System.out.print("请先输入原密码:");
String oldpassword = scanner.next();
if(!acc.getPassword().equals(oldpassword)){
System.out.println("原密码错误");
return;
}
System.out.println("原密码正确");
System.out.print("请输入新密码:");
String newPassword = scanner.next();
acc.setPassword(newPassword);
System.out.println("修改成功");
}
}