Java程序设计入门第五课:猜数字游戏程序优化及九九乘法表

本文主要是介绍Java程序设计入门第五课:猜数字游戏程序优化及九九乘法表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、数据类型:浮点型

我们在现实生活中经常用到10进制的数据,比如整数和小数。但是小数经常出现小数点后无限循环的情况。比如圆周率的π和1/3。这些数字想要存入计算机中。我们只能使用double和float来存储。

float:单精度,占用4个字节的内存空间,也就是4*8=32位二进制。

double:双精度,占用8个字节的内存空间,也就是8*8=64位的二进制。

1.float类型在定义赋初值的时候,后面要+f。

2.一般的float类型需要格式化,需要用到printf方法或者String.format方法。

3.float 类型由于后台存储精度的问题,一般后台运算如加减乘除运算是不准确的。

4.对于精度高的数字,不能轻易做比较运算。

5.由于精度的问题,注意对float类型和double类型的转换。

注意:转化时对小数点位数作限制

二、优化后的程序源代码如下:

import java.util.Scanner;public class test_guest_price {public static void main(String[] args) {//定义全局变量,uname玩家参与名字,p_price系统产生的价格String uname;//float类型赋初值尾部+ffloat p_price=0.00f;//定义菜单System.out.println("————————————————————————————————");System.out.println("        游戏:积分数字猜猜猜        ");System.out.println("                        作者:WX");System.out.println("                        版本:v1.1");System.out.println("————————————————————————————————");//显示欢迎界面,用户输入回车后,进入用户名输入界面//接收回车需要Scanner变量Scanner input = new Scanner(System.in);//用户输入任何数据都不接收input.nextLine();//用户输入回车后,进入用户名输入界面System.out.println("请输入用户名字:");//接收全局变量unameuname=input.next();//欢迎界面System.out.println("用户"+uname+",欢迎进入游戏空间,现在请选择积分数字商品的类别!");//输出类别System.out.println("————————————————————————————————");System.out.println("1——————————————家电(1000-2000)");System.out.println("2——————————————文具(0-100)");System.out.println("————————————————————————————————");//接收用户输入的1或2,防止用户输入其它内容报错,这里使用nextString u_choice=input.next();//用户的u_choice内容输入后,只有1和2可以响应//条件语句有确定值使用switch语句switch(u_choice){case "1"://定义一个临时变量,格式化字符串两位小数String tmp_price=String.format("%.2f",Math.random()*1000+1000);//使用Float.parseFloat不同类型之间转化方法转化成float类型p_price=Float.parseFloat(tmp_price);break;case "2"://定义一个临时变量,格式化字符串两位小数tmp_price=String.format("%.2f",Math.random()*99+1);//使用Float.parseFloat不同类型之间转化方法转化成float类型p_price=Float.parseFloat(tmp_price);break;default://定义一个临时变量,格式化字符串两位小数tmp_price=String.format("%.2f",Math.random()*10000);//使用Float.parseFloat不同类型之间转化方法转化成float类型p_price=Float.parseFloat(tmp_price);}//提示用户输入猜测的积分数字System.out.println("请用户输入猜测的积分数字:");//有重复步骤,使用循环结构while,定义用户猜测的积分数字变量u_price//nextFloat可能造成程序异常退出,使用next接收不会报错//只要用户输错了积分,就不停循环调用whileString tmp_u_price=input.next();//while条件里面匹配小数的正则,不匹配取非(!),matches匹配正则表达while(!tmp_u_price.matches("^[0-9]+(.[0-9]{1,2})?$")){System.out.println("你输入的积分有问题,请检查输入积分:");tmp_u_price=input.next();}//输入正常退出循环float u_price = Float.parseFloat(tmp_u_price);//设置一个最终输出不同信息的标志位boolean flag=false;//如果用户输入0或者负数,直接退出猜积分数字while(!(u_price==p_price)){if(u_price<=0) {//没有完成,flag=trueflag=true;//退出循环程序使用breakbreak;}//进入循环的条件没有等于if(u_price>p_price){System.out.println("猜大了");}else{System.out.println("猜小了");}//nextFloat可能造成程序异常退出,使用next接收不会报错tmp_u_price=input.next();//while条件里面匹配小数的正则,不匹配取非(!),matches匹配正则表达while(!tmp_u_price.matches("^[0-9]+(.[0-9]{1,2})?$")){System.out.println("你输入的积分有问题,请检查输入积分:");tmp_u_price=input.next();}//输入正常退出循环u_price=Float.parseFloat(tmp_u_price);}//输出用户是否猜测出来,猜出来的输出“你真聪明”,猜不出来“再接再励”if(flag){System.out.println("再接再励");}else{System.out.println("你真聪明");}//程序最后留下建议内容System.out.println("对本系统的使用有什么宝贵意见,可以联系作者解决!");}
}

三、优化后的运行结果为:


四、九九乘法表

1*1=1

1*2=2  2*2=4

1*3=3  2*3=6  3*3=9

...

源代码如下:

public class test_nine_nine_multi {public static void main(String[] args) {//产生笛卡尔积相乘的两个数字//双重循环for(int i=1;i<10;i++){for(int j=1;j<10;j++){System.out.print(j+"*"+i+"="+i*j+"\t");//根据图形特点,满足条件的输出if(j==i){//break退出break;}}//第一重循环结束打印换行System.out.println();}}
}

运行结果为:

需要完整版资源请访问博主个人码云地址:JavaSS: Java实训

这篇关于Java程序设计入门第五课:猜数字游戏程序优化及九九乘法表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/425043

相关文章

Spring Boot 整合 SSE的高级实践(Server-Sent Events)

《SpringBoot整合SSE的高级实践(Server-SentEvents)》SSE(Server-SentEvents)是一种基于HTTP协议的单向通信机制,允许服务器向浏览器持续发送实... 目录1、简述2、Spring Boot 中的SSE实现2.1 添加依赖2.2 实现后端接口2.3 配置超时时

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二

一文详解Java异常处理你都了解哪些知识

《一文详解Java异常处理你都了解哪些知识》:本文主要介绍Java异常处理的相关资料,包括异常的分类、捕获和处理异常的语法、常见的异常类型以及自定义异常的实现,文中通过代码介绍的非常详细,需要的朋... 目录前言一、什么是异常二、异常的分类2.1 受检异常2.2 非受检异常三、异常处理的语法3.1 try-

Java中的@SneakyThrows注解用法详解

《Java中的@SneakyThrows注解用法详解》:本文主要介绍Java中的@SneakyThrows注解用法的相关资料,Lombok的@SneakyThrows注解简化了Java方法中的异常... 目录前言一、@SneakyThrows 简介1.1 什么是 Lombok?二、@SneakyThrows

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

Java Response返回值的最佳处理方案

《JavaResponse返回值的最佳处理方案》在开发Web应用程序时,我们经常需要通过HTTP请求从服务器获取响应数据,这些数据可以是JSON、XML、甚至是文件,本篇文章将详细解析Java中处理... 目录摘要概述核心问题:关键技术点:源码解析示例 1:使用HttpURLConnection获取Resp

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

Java中Switch Case多个条件处理方法举例

《Java中SwitchCase多个条件处理方法举例》Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,:本文主要介绍Java中SwitchCase多个条件处理的相... 目录前言基本语法处理多个条件示例1:合并相同代码的多个case示例2:通过字符串合并多个case进阶用法使用