java基础学习

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("修改成功");


    }
}
相关推荐
yttandb1 小时前
数据库的设计
java·数据库
坐吃山猪1 小时前
Tree-sitter语法树解析
开发语言·python·tree-sitter
郝学胜-神的一滴2 小时前
深度解析:深度学习核心特性与行业实践
人工智能·python·rnn·深度学习·神经网络·cnn
zhouping@2 小时前
JAVA的学习笔记day05
java·笔记·学习
luckyzlb2 小时前
02-kafka(01润色版)
java·中间件·kafka
清水白石0082 小时前
《解锁 Python 潜能:从内存模型看可变与不可变对象,及其实战最佳实践》
大数据·开发语言·python
向阳蒲公英2 小时前
dify中大模型参数temperature 含义及建议设置
python
ByNotD0g2 小时前
Tomcat中的回显问题
java·tomcat
IT19952 小时前
C++工作笔记-动态库中的单例类存储方式
开发语言·c++·笔记