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


    }
}
相关推荐
HHHHH1010HHHHH几秒前
CSS如何处理带有状态切换的折叠菜单_利用BEM修饰符管理状态
jvm·数据库·python
2401_871696522 分钟前
如何在响应式网页中水平居中表单(CSS 绝对定位居中方案)
jvm·数据库·python
va学弟3 分钟前
Agent入门开发(2):个性化功能添加
java·服务器·ai
8486981193 分钟前
Cursor 用 Java + Vue3 做了一个可落地的酒店管理系统(HMS),支持多门店、RBAC、财务结算,源码开源!
java·开发语言·开源
2301_775148154 分钟前
CSS如何减少对HTML结构依赖_利用BEM命名保持样式的逻辑独立
jvm·数据库·python
格林威5 分钟前
面阵相机 vs 线阵相机:堡盟与Basler选型差异全解析 +C# 实战演示
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·工业相机
计算机徐师兄9 分钟前
Python基于Django的创新实验室系统(附源码,文档说明)
python·django·创新实验室系统·python创新实验室系统·创新实验室·实验室系统·python实验室系统
sinat_3834373611 分钟前
HTML函数调试需要高性能电脑吗_调试环境硬件需求技巧【指南】
jvm·数据库·python
解救女汉子14 分钟前
Nginx如何配置phpMyAdmin访问_反向代理设置方法
jvm·数据库·python
程序员老邢15 分钟前
【技术底稿 23】Ollama + Docker + Ubuntu 部署踩坑实录:网络通了,参数还在调
java·经验分享·后端·ubuntu·docker·容器·milvus