精华内容
下载资源
问答
  • Java开发控制台程序的输入输出

    千次阅读 2016-11-15 23:13:34
    Java开发控制台程序的输入输出: 一.使用Scanner获取用户从控制台的输入: package Com.icoem; import java.util.Scanner; public class HelloWord { public static void main(String[] args) { try{ ...

    Java开发控制台程序的输入输出:

    一.使用Scanner获取用户从控制台的输入:

    package Com.icoem;
    
    import java.util.Scanner;
    
    public class HelloWord {
    	public static void main(String[] args) {
    		try{
    			System.out.print("请输入分数:");
    			Scanner input=new Scanner(System.in);
    			int fraction=input.nextInt();
    			System.out.println("加分前的分数"+String.valueOf(fraction));
    			int temp=0;
    			while(fraction<60){
    				temp++;
    				fraction++;
    			}
    			System.out.println("加分后的分数:"+String.valueOf(fraction));
    			System.out.println("加分次数:"+String.valueOf(temp));
    		}catch (Exception e) {
    			System.out.println(e.getCause().getMessage());
    		}
    	}
    }
    

    总结:Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象.Scanner reader=new Scanner(System.in); 然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型next.Byte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShot(),上述方法执行时都会造成堵塞,等待用户在命令行输入数据回车确认.例如,拥护在键盘输入12.34,hasNextFloat()的值是true,而hasNextInt()的值是false. NextLine()等待用户输入一个文本行并且回车,该方法得到一个String类型的数据。

    二使用BufferedReader

    package Com.icoem;
    
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;  
    
    public class HelloWord {
    	public static void main(String[] args) {
    		BufferedReader  intput=new BufferedReader(new InputStreamReader(System.in));
    		try{
    			System.out.print("请输入分数:");
    			int fraction=Integer.parseInt(intput.readLine()) ;
    			System.out.println("加分前的分数"+String.valueOf(fraction));
    			int temp=0;
    			while(fraction<60){
    				temp++;
    				fraction++;
    			}
    			System.out.println("加分后的分数:"+String.valueOf(fraction));
    			System.out.println("加分次数:"+String.valueOf(temp));
    		}catch (Exception e) {
    			System.out.println(e.getCause().getMessage());
    		}
    	}
    }
    
    BufferedReader类用于缓冲读取字符,将字节流封装成BufferedReader对象,然后用readLine()逐行读入字符流,直到遇到换行符为止(相当于反复调用Reader类对象的read()方法读入多个字符)

    展开全文
  • Java控制台程序开发实例 本章主要内容: 1一个小棍游戏的逐步细化 2java类库 什么是包 包的使用 3利用io包设计一个键盘输入类 4寓文档于注解 1一个小棍游戏 两人轮流从一排指定数目的小棍中拿走1~3个小棍,谁拿最后一...
  • 前言: 上篇文章使用Java基于MVC模式开发一个简单商品管理系统给很多java web初学者(1-3个月)提供了些许帮助,不久前又有读者问我能不能开发一个纯java控制台版的简易管理系统,遂写下此文。 持续更新…… 2019年...

    前言: 上篇文章使用Java基于MVC模式开发一个简单商品管理系统给很多java web初学者(1-3个月)提供了些许帮助,不久前又有读者问我能不能开发一个纯java控制台版的简易管理系统,遂写下此文。

    持续更新……

    2019年12月25日 23:09:25

    文章已贴上全部源码

    效果图:
    在这里插入图片描述
    开发环境:

    • Eclipse Oxygen
    • JDK 1.8.0_112

    打包全部源码:
    地址: https://pan.baidu.com/s/1tXr8Y_32WlEXYZrMBWKK0A
    密钥: 6rpa

    功能:

    • 商品查询(全部查询、根据商品名模糊查询、根据商品产地模糊查询)
    • 商品添加(输入商品名、商品产地、商品价格即可添加)
    • 商品删除(输入商品编号,根据商品编号进行删除)
    • 商品更新(输入待更新商品的编号,再输入新名称,新产地信息,新价格,完成更新)

    不足:

    • 控制台版本,格式化的输出需要优化,用户操作需要优化,时间有限,先把功能完成了

    优点:

    • 适用于java初学者,学习JDBC相关操作,理解增加(Insert)、删除(Delete)、修改(Update)、查询(Retrive)的过程。
    • 代码根据之前MVC版本的DAO代码改造,避免了一个业务方法中写过多的DAO代码,一定程度上降低了代码的耦合性,基本符合开闭原则,可快速进行功能迭代,添加相关DAO实现后,使用工厂类注册,方便业务层调用等。

    项目树结构:

    项目树结构,及jar包引用:
    在这里插入图片描述
    数据表结构:
    在这里插入图片描述
    示例数据:
    在这里插入图片描述
    FAQ:

    • 如何构建项目,运行起来?

      使用一个集成开发环境(如:Eclipse、MyEclipse、Intellij IDEA等)创建java project → 将本文src中的全部包导入 → 为项目引用jdbc jar包 → 使用数据库脚本创建数据库表结构→检查数据库链接字符串 → 运行test类检查数据库连接是否正常,运行程序com.mysql.jdbc.JDBC4Connection@2c2a5319看到此输出,则证明数据库链接正常

    • 注意事项有哪些?

      暂未优化控制台输出的版本,因此格式稍有凌乱,建议使用鼠标将光标定位到末尾输入,则可以看到较为整齐的输出

      如果使用了本文中已打包的程序,注意配置jdk、数据库连接jar包的引用

    在这里插入图片描述


    源码:

    1.实体类

    package com.zjl.bean;
    /**
     * 商品实体类
     * @author Administrator
     *
     */
    public class Product {
    
    	private int id;
    	private String name;
    	private String addr;
    	private double price;
    
    	public Product() {
    		super();
    	}
    
    	public Product(int id, String name, String addr, double price) {
    		super();
    		this.id = id;
    		this.name = name;
    		this.addr = addr;
    		this.price = price;
    	}
    
    	public Product(String name, String addr, double price) {
    		super();
    		this.name = name;
    		this.addr = addr;
    		this.price = price;
    	}
    
    	public int getId() {
    		return id;
    	}
    
    	public void setId(int id) {
    		this.id = id;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getAddr() {
    		return addr;
    	}
    
    	public void setAddr(String addr) {
    		this.addr = addr;
    	}
    
    	public double getPrice() {
    		return price;
    	}
    
    	public void setPrice(double price) {
    		this.price = price;
    	}
    
    	@Override
    	public String toString() {
    		return "Product [id=" + id + ", 
    		name=" + name + ", 
    		addr=" + addr + ", 
    		price=" + price + "]";
    	}
    	
    }
    
    

    2.数据库连接工具类

    package com.zjl.conn;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    /**
     * 数据库连接工具类
     * @author Administrator
     *
     */
    public class ConnectDatabase {
    	
    	private static final String DRIVER_STRING="com.mysql.jdbc.Driver";
    	private static final String URL_STRING="jdbc:mysql://47.105.159.27:3306/dbms";
    	private static final String USER_STRING="root";
    	private static final String PASS_STRING="admin";
    	
    	public static Connection getConnection(){
    		Connection connection=null;
    		
    		try {
    			Class.forName(DRIVER_STRING);
    			connection=DriverManager.getConnection(URL_STRING, USER_STRING, PASS_STRING);
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		
    		return connection;
    	}
    	public void realse(Connection conn,PreparedStatement ps,ResultSet rs){
    		if(conn!=null){
    			try {
    				conn.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    		if(ps!=null){
    			try {
    				ps.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    		if(rs!=null){
    			try {
    				rs.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    }
    
    

    3.菜单及入口程序

    package com.zjl.console;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Scanner;
    
    import com.zjl.bean.Product;
    import com.zjl.conn.ConnectDatabase;
    import com.zjl.dao.DaoFactory;
    import com.zjl.service.IProductDao;
    
    public class Menu {
    	/**
    	 * 控制台版,简易商品管理系统,含商品增加、删除、修改、查询
    	 * 含用户登录
    	 * 使用了mysql数据库
    	 * 基于Java20180130MVC进行了改造,使用了原有的包结构和DAO
    	 */
    	static Scanner sc = new Scanner(System.in);
    	static List<Product> pList = new ArrayList<Product>();
    	static Product product = new Product();
    	static IProductDao pDao = DaoFactory.getProductDao();
    	
    	public static void main(String[] args) {
    		menu();
    	}
    	public static void menu(){	
    		while(true){
    		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("-------------------------");
    		System.out.println("请输入操作序号,按下回车,等待程序执行");
    		System.out.println();
    		
    		int choice = sc.nextInt();
    	
    			switch (choice) {
    			case 1:
    				// 1.测试数据库连接
    				System.out.println(ConnectDatabase.getConnection());
    				break;
    			case 2:
    				//2.查询商品
    				retrive();
    				break;
    			case 3:
    				//3.添加商品
    				insert();
    				break;
    			case 4:
    				//4.删除商品
    				delete();
    				break;
    			case 5:
    				//5.更新商品
    				update();
    				break;
    			}
    			
    		}
    	}
    	
    	/**
    	 * 商品查询,全部查询,模糊查询
    	 */
    	private static void retrive() {
    		Map<String , Object> map =new HashMap<String, Object>();
    
    		System.out.println("1.查询全部商品");
    		System.out.println("2.按商品名称模糊查询");
    		System.out.println("3.按商品产地模糊查询");
    		
    		int choice1 = sc.nextInt();
    		switch (choice1) {
    		case 1:
    			//查询全部
    			try {
    				map=null;
    				pList = pDao.queryProduct(map);
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    			System.out.println("\t编号\t名称\t产地\t价格\n");
    			System.out.println("\t----------------------------------------------------");
    			for (int i = 0; i < pList.size(); i++) {
    				System.out.println(pList.get(i));
    			}
    			break;
    		case 2:
    			System.out.println("请输入商品名称,进行模糊查询:");
    			String name = sc.next();
    			//按名称模糊查询
    			map.put("name",name);
    			try {
    				pList = pDao.queryProduct(map);
    				System.out.println("\t编号\t名称\t产地\t价格\n");
    				for (int i = 0; i < pList.size(); i++) {
    					System.out.println(pList.get(i));
    				}
    			} catch (Exception e1) {
    				e1.printStackTrace();
    			}
    			break;
    		case 3:
    			//按产地模糊查询
    			System.out.println("请输入商品产地,进行模糊查询:");
    			String addr = sc.next();				
    			map.put("addr", addr);
    			try {
    				pList = pDao.queryProduct(map);
    			} catch (Exception e1) {
    				e1.printStackTrace();
    			}
    			System.out.println("\t编号\t名称\t产地\t价格\n");
    			for (int i = 0; i < pList.size(); i++) {
    				System.out.println(pList.get(i));
    			}
    		
    		}
    	}
    	/**
    	 * 添加商品
    	 */
    	private static void insert() {
    		System.out.println("请输入要增加的商品信息:");
    		Scanner sc = new Scanner(System.in);
    		
    		System.out.println("请输入商品名称:");
    		String name = sc.next();
    		
    		System.out.println("请输入商品产地:");
    		String addr = sc.next();
    		
    		System.out.println("请输入商品价格:");
    		Double price = sc.nextDouble();
    		
    		product.setName(name);
    		product.setAddr(addr);
    		product.setPrice(price);
    		
    		try {
    			if(pDao.insert(product)){
    				System.out.println("商品添加成功");
    			}else{
    				System.out.println("商品添加失败");
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    	/**
    	 * 删除商品
    	 */
    	private static void delete() {
    		System.out.println("请输入要删除的商品编号:");
    		Scanner sc = new Scanner(System.in);
    		int id = sc.nextInt();
    		product.setId(id);
    		
    		try {
    			if(pDao.delete(product)){
    				System.out.println("删除商品成功");
    			}else{
    				System.out.println("删除商品失败");
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    	/**
    	 * 更新商品
    	 */
    	private static void update() {
    		System.out.println("请输入要更新的商品编号:");
    		Scanner sc =new Scanner(System.in);
    		int id = sc.nextInt();
    		product.setId(id);
    		try {
    			product = pDao.queryById(product);
    		
    			if(product==null){
    				System.out.println("数据不存在");
    			}else{
    				System.out.println("请输入新的商品名称:");
    				String name = sc.next();
    				
    				System.out.println("请输入新的商品产地:");
    				String addr = sc.next();
    				
    				System.out.println("请输入新的价格:");
    				Double price = sc.nextDouble();
    				
    				product.setName(name);
    				product.setAddr(addr);
    				product.setPrice(price);
    				
    				if(pDao.update(product)){
    					System.out.println("商品信息更新成功");
    				}else{
    					System.out.println("商品信息更新失败");
    				}
    			}
    			
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    
    

    4.工厂类

    package com.zjl.dao;
    
    import com.zjl.service.IProductDao;
    import com.zjl.service.IUserDao;
    /**
     * DAO工厂类,为DAO调用者提供DAO实例对象
     * @author Administrator
     *
     */
    public class DaoFactory {
    	public static IUserDao getUserDao(){
    		return new UserDaoImp();
    	}
    	public static IProductDao getProductDao(){
    		return new ProductImp();
    	}
    }
    
    

    5.商品DAO实现类

    package com.zjl.dao;
    
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    import com.zjl.bean.Product;
    import com.zjl.bean.User;
    import com.zjl.conn.ConnectDatabase;
    import com.zjl.service.IProductDao;
    /**
     * 商品操作接口实现类,实现商品的增加、删除、更新、添加等操作
     * @author Administrator
     *
     */
    public class ProductImp implements IProductDao {
    	PreparedStatement ps = null;
    	public boolean insert(Product p) {
    		String sql ="insert into product(name,addr,price) values(?,?,?)";
    		int n =0;
    		try{
    		ps = ConnectDatabase.getConnection().prepareStatement(sql);
    		
    		ps.setString(1, p.getName());
    		ps.setString(2, p.getAddr());
    		ps.setDouble(3, p.getPrice());
    		n=ps.executeUpdate();
    		}catch (Exception e) {
    		e.printStackTrace();
    		}
    		return n>0;
    	}
    
    	public boolean delete(Product p) {
    		String sql ="delete from product where id="+p.getId();
    		int n=0;
    		try{
    		ps=ConnectDatabase.getConnection().prepareStatement(sql);
    		n=ps.executeUpdate();
    		}
    		catch (Exception e) {
    			e.printStackTrace();
    		}
    		return n>0;
    	}
    
    	public boolean update(Product p) {
    		String sql = "update product set name=?,addr=?,price=? where id=?";
    		int n = 0;
    		try{
    		ps=ConnectDatabase.getConnection().prepareStatement(sql);
    		ps.setString(1, p.getName());
    		ps.setString(2, p.getAddr());
    		ps.setDouble(3, p.getPrice());
    		ps.setInt(4, p.getId());
    		
    		n=ps.executeUpdate();
    		}
    		catch(Exception e){
    			e.printStackTrace();
    		}
    		return n>0;
    	}
    
    	public List<Product> queryProduct(Map<String, Object> map) {
    		StringBuffer sql= new StringBuffer("select * from product where 1 =1");
    		// 判断Map,根据name模糊查询
    		if (map != null && map.get("name") != null) {// map不为空,即为模糊查询,append增加sql查询语句
    			sql.append(" and name like '").append("%").append(map.get("name")).append("%'");
    			// 根据addr模糊查询
    		} else if (map != null && map.get("addr") != null) {
    			sql.append(" and addr like '").append("%").append(map.get("addr")).append("%'");
    		}
    		List<Product> list = new ArrayList<Product>();
    		try{
    		ps = ConnectDatabase.getConnection().prepareStatement(sql.toString());
    		ResultSet rs = ps.executeQuery();
    		while(rs.next()){
    			Product p = new Product();
    			p.setId(rs.getInt("id"));
    			p.setName(rs.getString("name"));
    			p.setAddr(rs.getString("addr"));
    			p.setPrice(rs.getDouble("price"));
    			list.add(p);
    		
    		}
    		}
    		catch (Exception e) {
    			e.printStackTrace();
    		}
    		return list;
    	}
    
    	public Product queryById(Product p) {
    		Product product = null;
    		String sql = "select * from product where id="+p.getId();
    		try{
    		ps = ConnectDatabase.getConnection().prepareStatement(sql);
    		ResultSet rs = ps.executeQuery();
    		if(rs.next()){
    			product  = new Product();
    			product.setId(rs.getInt("id"));
    			product.setName(rs.getString("name"));
    			product.setAddr(rs.getString("addr"));
    			product.setPrice(rs.getDouble("price"));
    					
    					
    		}
    		}catch(Exception e){
    			e.printStackTrace();
    		}
    		return product;
    	}
    
    }
    
    

    6.商品DAO接口

    package com.zjl.service;
    
    import java.util.List;
    import java.util.Map;
    
    import com.zjl.bean.Product;
    import com.zjl.bean.User;
    /**商品操作接口
     * @author Administrator
     *
     */
    public interface IProductDao {
    	public boolean insert(Product p);
    	public boolean delete(Product p);
    	public boolean update(Product p);
    	public List<Product> queryProduct(Map<String, Object> map);
    	public Product queryById(Product p);
    }
    
    

    7.测试类

    package com.zjl.test;
    
    import com.zjl.bean.User;
    import com.zjl.conn.ConnectDatabase;
    import com.zjl.dao.DaoFactory;
    import com.zjl.service.IUserDao;
    
    public class test {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		ConnectDatabase conn = new ConnectDatabase();
    		System.out.println(conn);
    		IUserDao userDao =DaoFactory.getUserDao();
    		User user = new User("李四","123456");
    		System.out.println(userDao.insert(user));
    	}
    
    }
    
    

    8.sql脚本

    /*
    SQLyog v10.2 
    MySQL - 5.0.96-community-nt : Database - dbms
    *********************************************************************
    */
    /*!40101 SET NAMES utf8 */;
    
    /*!40101 SET SQL_MODE=''*/;
    
    /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
    CREATE DATABASE /*!32312 IF NOT EXISTS*/`dbms` /*!40100 DEFAULT CHARACTER SET utf8 */;
    
    USE `dbms`;
    
    /*Table structure for table `product` */
    
    DROP TABLE IF EXISTS `product`;
    
    CREATE TABLE `product` (
      `id` int(11) NOT NULL auto_increment,
      `name` varchar(20) NOT NULL,
      `addr` varchar(50) NOT NULL,
      `price` double NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
    
    /*Data for the table `product` */
    
    insert  into `product`(`id`,`name`,`addr`,`price`) 
    values (1,'冰红茶','广东',3.5),
    (2,'娃哈哈','四川',1),
    (3,'农夫山泉','泉州',2),
    (4,'怡宝','武汉',2),
    (5,'红牛','四川',4.5);
    /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
    /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
    /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
    /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
    
    

    后记:文章适用于初学java不久的读者,可以帮助理解jdbc 相关的Create、Retrive、Update、Delete相关操作,且代码经过精简,分离了DAO,冗余性较低。如在阅读中遇到疑惑、发现不恰当之处,欢迎指正。

    展开全文
  • java控制台程序

    2015-04-15 16:28:14
    使用java开发控制台小游戏,打怪练级穿装备!
  • Spring Boot笔记-Java控制台程序及JPA映射Mysql

    千次阅读 多人点赞 2019-11-17 14:46:53
    在独立构件风格的项目中,要使用某些进程,干一些计算方面的事情,在此要使用控制台程序。在此使用spring boot完成后控制台程序,用于后端运行。 在此特意做一个命令行后端操作MySQL数据库的实例(使用JPA) ...

    目录

     

     

    基本概念

    代码与实例

    项目打包下载


     

     

    基本概念

    因为公司用spring boot用得多,本人身为C++程序员,对Java研究并不是很多。

    在独立构件风格的项目中,要使用某些进程,干一些计算方面的事情,在此要使用控制台程序。在此使用spring boot完成后控制台程序,用于后端运行。

    在此特意做一个命令行后端操作MySQL数据库的实例(使用JPA)

     

     

    代码与实例

    这里主要又2个方面的事情,一个是Spring Boot,控制台程序的编写,另外一个是JPA映射Mysql数据。

    这里是通过此处完成建立的:

    修改下DemoApplication即可:

    这里Maven依赖如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.10.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>demo</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.37</version>
                <scope>runtime</scope>
    
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.10</version>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    关于JPA映射MySQL关键的properties文件如下:

    spring.datasource.url=jdbc:mysql://XXX.XXX.XXX.XXX:3306/testdb
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
    spring.datasource.username=root
    spring.datasource.password=root
    

    这里借鉴了MVC中的MC

    其中采用了 依赖倒置 原则。

     

     

    项目打包下载

    源码下载地址如下:

    https://github.com/fengfanchen/Java/tree/master/Spring%20Boot%20Command

     

    展开全文
  • 黄道十二宫 一个Java控制台应用程序,旨在允许Java开发人员(或实际上是任何人)找到其黄道带标志。 结果包括中国和西方的十二生肖。
  • Java控制台程序中的输出语句及注释Java控制台输出语句输出不换行输出并换行Java中的转义符Java中常见的转义符练习一Java中的注释单行注释和多行注释文档注释javadoc命令简介练习二练习三总结练习参考代码练习一参考...


      跟着磊哥学Java系列为Java基础入门系列。通过此系列,我们将了解Java基础知识,包括变量、数据类型、运算符,选择结构、循环结构、数组等基本知识。此系列总结磊哥多年的经验,采用边讲边练的方式一起带领零基础的朋友走进Java世界。


      本系列每章都会有大量的练习题,请大家在学习过程中,认真的进行练习,并和我提供的参考代码比较,反复感悟。要把一门语言学好,只学不悟是不可能学好的,用心自我”感悟“,多练,多想是学好一门语言的基础。

      这是本系列的第二章
      您也可以通过下面连接查看其它章节

      Java由小白到高手之零基础学Java系列目录


    Java控制台输出语句

    输出不换行

    语法:System.out.print(“要输出的字符串”);
    **作用:**向控制台输出小括号中的字符串,输出后不换行
    **注意:**Java中的字符串必须用英文双引号包围。

    例如:我们在记事本中写入下面代码

    public class   MyFirstProgram   {
    	public static void main(String[] args)  {
    		//代码中写了两行输出语句
    		System.out.print("HelloJava");
    		System.out.print("HelloWorld");
    	}
    }
    

    运行结果如下,我们看到print 方法输出是不换行的。

    在这里插入图片描述

    输出并换行

    语法:System.out.println(“要输出的字符串”);
    **作用:**向控制台输出小括号中的字符串,输出后换行,即在输出后多输出一个换行符。
    **注意:**Java中的字符串必须用英文双引号包围。

    例如:我们在记事本中写入下面代码

    public class   MyFirstProgram   {
    	public static void main(String[] args)  {
    		//代码中写了两行输出语句
    		System.out.println("HelloJava");
    		System.out.println("HelloWorld");
    	}
    }
    

    运行结果如下,我们看到println方法输出后加了换行符。

    在这里插入图片描述

    Java中的转义符

       如果我们想输出英文的双引号等特殊字符如何做呢?在Java中我们可以通过转义符输出,转义符的引导符为“\”,如果我们想输出英文双引号就要按下面方法进行:

    public class   MyFirstProgram   {
    	public static void main(String[] args)  {
    		
    		System.out.println("\"");
    		
    	}
    }
    

    输出结果为:

    在这里插入图片描述

    Java中常见的转义符

    转义符说明
    \b退格符
    \n换行符
    \r回车符
    \"英文双引号
    \’英文单引号
    \\反斜线
    \t一个制表位(相当于按一下键盘上的tab键一次)

    思考?
    能不能用System.out.print()方法实现和System.out.println()方法一样的效果呢?
    相信聪明的你一定想出了方法,下面是其中的一种

    public class   MyFirstProgram   {
    	public static void main(String[] args)  {
    		
    		System.out.print("Hello Java\rHello World");
    		
    	}
    }
    

    练习一

      请按下图的格式在控制台输出相应内容(因记事本编码问题,我们暂不输出中文,除非你知道如何调整记事本的编码):

    在这里插入图片描述
      聪明如你,一定运行出了正确的结果。你也可以看一下文末的参考代码。


    Java中的注释

      注释在程序中是给我们程序员看的,Java编译时,不会对注释进行任何操作。写注释是写源码的一部分,一个良构的程序,注释应约占总代码量的1/3 左右。注释应实现以下作用:

      1. 写在类上(如我们上面写的代码中:class MyFirstProgram就是类)或方法(如我们上面写的代码中 main(String[] args)就是一个方法)的注释应注明类或方法的作用。
      2. 写在方法中的注释应是业务的思路(我们在今后的学习中会不断的学习)
      3. 写在变量中的注释应注明变量的作用(下章开始我们将学习变量)

      Java语言中的注释共分三种

    • 单行注释
    • 多行注释
    • 文档注释

    单行注释和多行注释

      - 单行注释以//开头 后面写注释内容。
      - 多行注释以 /*开头,以*/ 结束。
    下图是添加了注释的代码:

    public class   MyFirstProgram   {
    	/*
    	* main方法是程序的入口
    	* main方法的四要素缺一不可
    	* public 表示main方法是公有的
    	* static  是静态方法,我们在后续将学习
    	* void 表示方法不对外提供数据,我们后续将学习
    	* 小括号中的String[] args 是参数,表示方法将从外部接收数据
    	* 现在演示的的Java的多行注释,而不是文档注释,多行注释斜线后是一个*号
       * 中间每行的*号是为了好看,不是必须。
    	*/	
    	public static void main(String[] args)  {
    		//向控制台中输出name和age,并输出一个空行
    		System.out.println("name\t\t\tage\n");
    		
    		System.out.println("LeiGe\t\t\t18");
    		System.out.println("My name is LeiGe\t18");
    
    		
    	}
    }
    

    文档注释

      文档注释的作用很大,很强。下面描述中出现的新名词,大家可以先记忆,不用去理会,在后续的学习中,我们会逐渐的学习,在今后的学习中磊哥也会不断的强化注释。

    • 在类、方法、属性上的文档注释的类或方法的描述,可以在开发工具中生成提示信息。
    • 在类、方法、属性上的文档注释可以通过javadoc命令生成帮助手册(API) 。
    • 文档注释以 /**开头(注意是两个*),以 */ 结束。
    • 文档注释支持html语言。
    • 文档注释写法很专业,今天我们只简单了解,在后续学习中,我们还会不断的了解文档注释,以生成更专业的API手册

      下面示例给类和方法添加了文档注释,注释中的<p></p>,<a …></a>等为html代码,主要是为了在帮助文档中用,不了解可忽略,注释一般分为三部分:

    • 第一部分写类或方法的概要功能
    • 第二部分写类或方法的详细功能
    • 第三部分写类或方法的标注

      文档注释常见的标注:(除第一个和第二个外,其它大家仅需了解,在随后的学习过程中,我们会继续深化)

    @author 程序的作者
    @version 程序的版本
    @param 程序的参数,有写,没有不写
    @return 程序的返回值,有写,没有不写

    /**
    * <p>写在类第一行的文档注释应是类的作用.</p>
    * 
    * <P>空一行后这里写类的详细作用,支持html语法比如写上:</P>
    * <p>欢迎访问<a href="https://blog.csdn.net/weixin_42452652">彦磊的博客</a></P>
    * <p>其后可以写明作者等信息</p>
    *
    *<p>空一行后写文档标注,如作者、版本等</p>
    * @author 彦磊
    * @version 1.0
    */
    public class   MyFirstProgram   {
    	/**
    	* <p>写在方法文档注释第一行的是方法的概要作用.</p>
    	* 
    	* <p>空一行后写方法的详细作用</P>
    	* <p>程序的入口.</p>
    	* 
    	* <p>空一行后写文档的标注,如参数、返回值等.</p>
    	* @param args  接收从控制台传入的参数.
      * 
    	*/	
    	public static void main(String[] args)  {
    		//向控制台中输出name和age,并输出一个空行
    		System.out.println("name\t\t\tage\n");
    		
    		System.out.println("LeiGe\t\t\t18");
    		System.out.println("My name is LeiGe\t18");
    
    		
    	}
    }
    

    javadoc命令简介

      文档注释写完后,我们可以使用javadoc命令来生成API。

      java中的每个命令后加 -help参数都可获取到命令的使用帮助,下图演示了获取帮助的命令及部分帮助信息

    在这里插入图片描述
      今天我们重点了解部分参数

    语法:javadoc -d 要生成的帮助文档所在目录 -author -version -windowtitle 要生成API的文档


    参数解释:
    -d 输出文档的目标路径,即要生成的帮助文档所在目录。
    -author 包含 @author 段。
    -version 包含 @version 段。
    -windowtitle 文字 浏览器窗口显示的标题。
    -要生成API的文档 对哪些文件生成文档。
    每个参数中间都需要由空隔间分隔。


    示例:
    *javadoc -d d:\javaProject\doc -author -version -windowtitle 我的第一个API .java
    上面命令的作用是:为当前目录下所有的扩展名为.java的文件,在d盘javaProject的doc目录中生成帮助文档,帮助文档显示的标题为"我的第一个API",显示版本号和作者。

    下图演示了执行上述命令的过程。
    在这里插入图片描述
    执行成功后会在DOC目录下生成API文档
    在这里插入图片描述
    我们双击index.html就能打开我们的帮助文档了。

    在这里插入图片描述
    下面我们一一把注释和最终的效果对应一下,以更好理解文档注释。
    点击“程序包",出现下图,我们对应类的文档注释的第一行显示内容
    在这里插入图片描述
    点击上图绿框框住的类名,进入类的详细描述页面,如下图,请仔细对照:
    在这里插入图片描述
    点击上图绿框框住的文字,我们来对照方法的文档注释
    在这里插入图片描述

    练习二

      本阶段我们学习Java中的注释,重点了解了文档注释及javadoc命令生成API。通过下面练习来验证一下,你是否掌握了吧。

    1. 在练习一的基础上,为第一个输出语句添加多行注释,详细描述\t \n的作用及为什么添加多个\t。
    2. 在练习一的基础上,为第二个及第三个输出语句分别添加单选注释,描述语句的作用。
    3. 在练习一的基础上,为MyFirstProgram类加文档注释,需要有概要描述、详细描述、版本号及作者
      4.在练习一的基础上,为main方法添加文档注释,需要有概要描述、详细描述和参数标注。
      5.添加完注释后,再次对类进行编译运行,不能出错。

    练习三

      在练习二的基础上完成练习三:

    1.使用javadoc命令生成类的API。
    2.打开API文档,对各种描述及标注进行一一对应,加深对文档注释的理解 。


    总结

      到此,今天的内容就已经结束了,下面的思维导图是今天的总结 :
    在这里插入图片描述


      欢迎大家在评论中提出自己的建议及想和磊哥交流的问题,我将及时和大家交流。欢迎大家关注磊哥的博客,您将快速得到我的更新


    练习参考代码

    练习一参考代码

    public class   MyFirstProgram   {
    	public static void main(String[] args)  {
    		//行末的\n是为了多输出一个换行符
    		//由于My name is LeiGe比较长,因此在name后加了三个\t,用于对齐制表位。
    		System.out.println("name\t\t\tage\n");
    		System.out.println("LeiGe\t\t\t18");
    		System.out.println("My name is LeiGe\t18");
    	}
    }
    

    练习二参考代码

    /**
    * <p>写在类第一行的文档注释应是类的作用.</p>
    * 
    * <P>空一行后这里写类的详细作用,支持html语法比如写上:</P>
    * <p>欢迎访问<a href="https://blog.csdn.net/weixin_42452652">彦磊的博客</a></P>
    * <p>其后可以写明作者等信息</p>
    *
    *<p>空一行后写文档标注,如作者、版本等</p>
    * @author 彦磊
    * @version 1.0
    */
    public class   MyFirstProgram   {
    	/**
    	* <p>写在方法文档注释第一行的是方法的概要作用.</p>
    	* 
    	* <p>空一行后写方法的详细作用</P>
    	* <p>程序的入口.</p>
    	* 
    	* <p>空一行后写文档的标注,如参数、返回值等.</p>
    	* @param args  接收从控制台传入的参数.
         * 
    	*/	
    	public static void main(String[] args)  {
    		/*
    		* 向控制台中输出name和age,并输出一个空行
    		* \t 的作用是输出一个制表位
    		* \n的作用是输出一个换行符
    		*/
    		System.out.println("name\t\t\tage\n");
    		//换行输出LeiGe及18,并用制表位和上一行对齐
    		System.out.println("LeiGe\t\t\t18");
    		//换行输出My name is LeiGe及18,并用制表位和上一行对齐
    		System.out.println("My name is LeiGe\t18");
    
    		
    	}
    }
    

    练习三参考代码

    D:\javaProject>javadoc -d d:\javaProject\doc -author -version -windowtitle 我的第 一个API  *.java
    
    展开全文
  • 在SWT之前,Sun已经提供了一个跨平台GUI开发工具包AWT (Abstract Windowing Toolkit).AWT框架底层使用原生窗口部件(native widgets)构建,只能使用各个平台窗口部件的子集。 另一种释义:SWT(Stationary Wavelet...
  • 1.首先添加一个module 选择模板时选择library2.进行运行时的配置如下图所示 ...错误: 编码 GBK 的不可映射字符解决方案:在对应Module的Gradle中添加如下代码tasks.withType(JavaCompile) { options.encodi
  • JDK6的新特性之七:用Console开发控制台程序 JDK6中提供 了java.io.Console类专用来访问基于字符的控制台设备. 你的程序如果要与Windows下的cmd或者Linux下的Terminal交互,就可以用Console类代劳. 但我们不总是能...
  • 本文旨在想新手介绍使用集成开发环境编写JAVA控制台程序。高手绕道,呵呵。1,软件安装:JDK6, NetBeans 5.5.1,eclipse。前两个可从SUN网站上下的,其中有个整合的安装包,包含JDK6,和NetBeans 5.5.1。...
  • JDK6的新特性之七:用Console开发控制台程序 JDK6中提供了java.io.Console类专用来访问基于字符的控制台设备. 你的程序如果要与Windows下的cmd或者Linux下的Terminal交互,就可以用Console类代劳. 但我们不总是能...
  • (注意:文件名一定要和类名相同,HelloWorld.java 文件扩展名为java)之后打开控制台程序,先进入到存取这个文件的根目录,例:进入到根目录后1.输入“javac 保存的文件名.java”。例:javac HelloWorld.java。进行...
  • VS2019 C++安卓控制台程序开发

    千次阅读 2020-08-13 01:11:35
    能否在安卓上直接开发控制台应用呢? 答案是肯定行. 这个我也给VS的团队提过意见, 希望能够补充这一块的项目模板, 毕竟安卓的C++和Java应用都有了, C++的.so, .a库也有了, 唯独缺少了控制台应用. 但是人微言轻, 目前...
  • copyPatch是一个小型Java控制台应用程序,可帮助开发人员复制补丁文件。 例如,在源代码中,您需要修补folder1 / a.txt,folder2 / b.txt等,您需要一个接一个地进行复制。 使用此小型应用程序,在文本文件中列出您...
  • 简单天气应用 该Java控制台应用程序显示给定用户选择的城市的天气。 实施该项目是为了开发理想的软件体系结构(遵循简单的MVC) 技术领域 Java 格森 网络服务
  • 井字棋控制台界面开发,较为简单的一个小游戏,推荐java新手使用。
  • Java开发中,控制台输出仍是一个重要的工具,但默认的控制台输出有着各种各样的局限。本文介绍如何用Java管道流截取控制台输出,分析管道流应用中应该注意的问题,提供了截取Java程序和非Java程序控制台输出的实例...
  • 自动饮料售卖机控制台程序1. 首先,定义一个饮料抽象类```Drink.java```2. 定义一个咖啡类```Coffee.java```,继承饮料类3. 再定义一个可乐类```Cola.java```,继承饮料类4. 再定义一个矿泉水类```Water.java```,...
  • JAVA控制台写入信息保存在文件中 import java.io.*; import java.util.Scanner; public class WridFile { public static void main(String[] args) throws IOException { File file =new File("g:/book" + File...
  • Java JDK 控制台环境设置

    千次阅读 2012-12-11 16:01:45
    Java 以前的下载地址,SUN还在的时候是 http://java.sun.com,不过现在也可以用,... ... 名词解释(解释内容来自维基百科) JDK:Java Development Kit (简称JDK)是Sun 公司针对Java开发人员发布(现由Oracl...
  • 解决java项目控制台、日志出现乱码

    千次阅读 2020-08-07 15:22:03
    java操作中,总是出现莫名其妙的乱码,有时候是控制台输出出现乱码,有时候是日志打印出现乱码… 按照下面的操作来,从此解决乱码问题 右击Idea图标,打开文件位置,找到两个文件:idea.exe.vmoptions和idea.64....
  • Clamshell-Cli是用于在Java中构建基于控制台的命令行应用程序的框架。 Clamshell使用了一种简单的插件架构(基于[ ServiceLoader API]),开发人员可以通过它部署组件来构建具有控件的组件基于控制台的应用程序的...
  • 该团队遵循系统开发生命周期 (SDLC) 使用瀑布方法开发应用程序。 内容: 可执行文件 (RegSys.jar)、2 个数据库文件(CourseDatabase、StudentDatabase)、3 个源文件(Course.java、RegSys.java、Student.java) ...
  • 所有示例都是我遇到的实验室、开发手册问题或常见的应用程序需求。 虽然问题来源可能不同,但我编写了存储库中提供的所有解决方案。 随着时间的推移,将添加更高级的主题。 所需工具 所有应用程序都是使用 , 或 编写...
  • 但是当我们需要从控制台中获取键盘输入内容时发生如下异常: Evaluation failed because the thread is not suspended. import java.util.Scanner; public class HelloWorld { public static...
  • 新建java工程,实现利用1、2、3、5按键控制星号左移、下移、右移和上移。 实现效果如下: 1.运行程序 2.点击数字键3,点击enter确定,效果如下,星号右移一位: 3.点击数字键2,点击enter,效果如下,星号下移...
  • java控制台输出Hello World!

    千次阅读 2016-05-25 14:40:33
    功能:在控制台输出Hello World! 日期:2016-05-25 */ //public:表示这个类是公共的 //class:表示这是一个类 //Hello:类名,类名首字母一般大写 public class Hello {  //主函数,程序的入口  public static ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 124,983
精华内容 49,993
关键字:

java开发控制台程序

java 订阅