Java咖啡馆(6)——编写猜数字游戏-Java基础-Java-编程开发

Java咖啡馆---编写猜数字游戏 猜数字游戏       你肯定玩过猜数字游戏?游戏随机给出一个0至99(包括0和99)之间的数字,然后让你猜是什么数字。你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。经过几次猜测与提示后,最终推出答案。(见图1)游戏设计(1)       首先搭建Java程序框架。打开Eclipse,新建名为GuessNumberGame的项目,然后新建名为GuessNumber的Java类。别 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

  上一回我们讲解了Java语言基础,篇幅所限,仅仅包含相当有限的Java语法知识。本期我们将在上回基础上编写一个猜数字的游戏,进一步学习Java语言基础知识。

猜数字游戏

  你肯定玩过猜数字游戏—游戏随机给出一个0至99(包括0和99)之间的数字,然后让你猜是什么数字。你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。经过几次猜测与提示后,最终推出答案(我们提供了完整代码,点击这里下载)。(见图1)

游戏设计

  首先搭建Java程序框架。打开Eclipse,新建名为GuessNumberGame的项目,然后新建名为GuessNumber的Java类。别忘记给GuessNumber加上合适的javadoc。

  第一步:随机数的产生

  我们可以借助Java API提供的Random类来产生一个随机数。

  首先在main函数中加入以下三行代码:

// 新建一个随机数产生器,然后生成一个0到99之间的整数。
Random random = new Random();
int number = random.nextInt(100);

  不出所料,Eclipse就像语文老师一样,立即在错误语句处划出红线,把鼠标移动到红线上,可以看到具体出错信息(见图2)。

  包(Package)的概念

  Java API中包含了极其丰富、类似于Random这样由Sun预先定义好的类(Class,如果忘记相关概念,请参考第四篇连载—《品味第一杯咖啡》),与变量作用域的问题一样,不同包中可以有同名同姓的类,如果没有包的概念,就会遇到命名冲突问题。此外,包还能进行安全控制,你可以规定哪些类可以被包外部调用,哪些不可以。

  Random类是在java.util这个包中。可以手动在源程序顶部输入import java.util.Random;语句来申明该程序将要使用java.util包中的Random类,然而有了Eclipse,就不用那么麻烦了—把光标移动到有红色波浪线的Random上,然后按下Ctrl+Shift+M,Eclipse会自动帮你完成导入的工作了。此时保存一下源代码,警告是不是消失了?希望你牢记这个快捷键的用法,在开发大型项目时,再好的脑子也无法牢记每个类所在的包的名字,有了Eclipse的鼎力相助,偷个懒也没问题。

  语句翻译

  第一句定义了一个类型是Random类的变量random(Java语言区分大小写,所以Random和random是两回事儿),并且用new操作符生成一个Random类的实例赋给random变量。还记得我们上期连载说到变量还有一种引用类型吗?这就是一个例子。random变量实际上是一个参照,指向内存中用new操作符新建的Random类的实例。说起来很拗口,大多数情况下可以把random直接看做是一个Random类的实例,可以通过“random”加上“.操作符”来调用Random类的方法,比如用random.nextInt(100)来获取一个0至99之间的随机数。

  第二句语句定义一个整型变量number来保存随机产生的整数,并且用直接初始化的方法把random产生的随机数赋给number变量。

  第二步:标准输入输出

  标准输入输出(Standard I/O)是指可以被应用程序使用的信息流。比如,应用程序可以从标准输入(Standard input)读取数据,向标准输出(Standard output)写数据,把出错信息发送到标准错误(Standard error)。通过输入输出,应用程序和应用程序之间可以被串联起来使用。虽然标准输入输出是从UNIX发展出来的概念,在Windows中也广泛应用,如果你熟悉DOS,这个概念自然不陌生。
猜数字游戏主要用到标准输入,更明确一些,就是控制台输入。还记得我们经常使用System.out.println进行控制台输出吗?相反,要从控制台输入,就需要用到System.in。它是一个纯粹的输入流,而猜数字游戏主要是通过控制台获取玩家的字符(特别是能够支持多国语言的Unicode字符)输入,我们需要把它包装成一个BufferedReader实例来使用:

BufferedReader input = new BufferedReader(
new InputStreamReader(System.in));

  这时,input就是一个能处理来自控制台输入的、支持Unicode的、可以整行读取的一个BufferedReader实例,比如能通过input.readLine()方法获取玩家在控制台整整一行的输入了。

  第三步:异常

  正如阿甘的名言—Shit happens,程序中的金科玉律就是—一定会出错。出错并不可怕,关键看如何对待错误,有错必究才善莫大焉。

  Java语言提供了异常(Exception)处理机制帮助程序员发现并处理异常。什么是异常呢?所谓异常,就是在程序执行过程中能干扰程序正常流程的事件。导致异常的原因很多,比如文件找不到、数组越界、除以零等。当异常出现时,一个异常对象将被自动生成并传递给Java“运行时环境”(runtime system),说得专业一点,就是抛出一个异常。异常对象包含了异常类型、程序运行状态等信息。“运行时环境”得到异常对象后便打断程序的正常流程,自动寻找一个专门处理该异常的代码块来解决问题。这样的代码块称作异常句柄(Exception Handler)。你可以在异常句柄中尝试修复错误、重试或者报错,或者实在无法进行下去的时候来个自我了断。如果“运行时环境”找不到异常句柄,Java程序便会自行中断。

  一个典型的异常处理是这个样子的:

try {
statement(s);
} catch (exceptiontype1 name) {
statement(s);
} catch (exceptiontype2 name) {
statement(s);
} finally {
statement(s);
}

  其中:

  ★try语句括起来的语句可能抛出异常。try语句至少要搭配一个catch语句或finally语句,不能单独使用。
  ★catch语句必须和一个try语句配套使用,根据异常类型(exception type)分别处理不同的异常。也就是说,Java有许多预先定义的异常,你可以通过多个catch语句对它们分门别类地处理。你还可以自己定义异常类型。如果try语句块中没有抛出异常,这里自然不会被执行。
  ★finally语句也必须和一个try语句配套使用,与catch语句不同,无论try语句块中是否抛出异常,finally所包括的语句块都会被执行。

[1] [2]

python实现DoIP基本通信(收发报文) 阅读详情

相关推荐

资产监测设备中130dBm的GPS信号注入天线端口,C/N0一般是多少?

笔者的团队一直从事于资产监测设备的开发,在开发过程中,涉及到很多细节的问题,针对新入职的同事来说较为陌生。同时,在团队外,还有需要对智能硬件终端开发感兴趣的用户。基于此背景下,笔者将在下面的内容主要介绍资产监测设备以及对设备中的GPS相关的问题:130dBm的GPS信号注入天线端口,C/N0一般是多少?作出详细的解答。 资产监测设备概述: 资产监测设备是基于物联网通信技术基础上的智能硬件终端,其主要作用是帮助用户监测资产在仓库、运输途中、交付整个流通环节中,提供资产的实时位置与状态参数。用户只需要登录资产

瑞奇聊通信模组 1229

java-一维数组的随机赋值

import java.util.Random; public class ddd {  /**   * @param args   */  public static void main(String[] args) {   Random rand = new Random();  // 创建一个Random对象   int[] a = null; // 声明整形数组a   in

liheao的博客 5140

三极管和MOS管工作原理详解

PN结的形成 PN结是三极管以及场效应管中最基本的组成部分,要想彻底搞明白三极管以及场效应管的工作原理,必须先搞清楚PN结形成的原理和工作特性。 本征半导体以及空穴对 本征半导体(intrinsic semiconductor))完全不含杂质且无晶格缺陷的纯净半导体称为本征半导体。主要常见代表有硅、锗这两种元素的单晶体结构。硅、锗都是4价原子,在半导体内部形成相对稳定的共价键结构,如图 1所

技术交流是便宜的的博客 10万+

使用java编程猜数字游戏

使用循环代码实现猜数字: import java.util.Scanner; import java.util.Random; public class xy1 {     private static Scanner reader; public static void main(String[] args) {         reader = new Scanne

a1273290659的博客 5923

oracle rac 成本及架构,Oracle Extended RAC 架构实战

Extended-RAC,是RAC技术的一种扩展增强。Extended-RAC是通过专用光纤(或租用裸光纤)加DWDM(波分设备)设备将两个不同楼栋/同城甚至异地机房进行相连,将数据库主机、存储分别放置于不同机房,利用存储复制/ASM Mirror等技术进行数据复制进行搭建的一种远距离集群架构。Extended RAC需要将不同楼栋/同城甚至异地机房通过专用光纤(或租用裸光纤)加DWDM(光纤复用...

weixin_33812391的博客 2453

【Collibra 驱动 IPD 数据血缘治理】:三层图谱分层展示体系与全链路追踪的技术业务实践

(应用级/数据级/字段级)是理解复杂数据流动的核心手段。其价值不仅体现在可视化的直观性,更在于通过。技术保障血缘不可篡改性,进一步提升IPD数据治理的可靠性。,解决了跨层级血缘分析的性能与可用性矛盾。数据血缘图谱要素定义(字节跳动/腾讯云/信安标委)实现对IPD数据的精准追踪,而数据血缘图谱的。分层交互设计标准(智慧城市数据中台规范)Collibra技术文档(2024)字段级血缘的挑战与解决路径。自动优化血缘路径,并深化。字段级血缘技术实现方案。Collibra通过。图数据库性能优化原理。

百态·数智思维 | 聚焦大数据、量化与未来AI 1244

咖啡馆 java游戏_Java咖啡馆(6)——编写猜数字游戏

举个具体的例子来熟悉一下。猜数字游戏需要从控制台获取玩家输入的数字。我们先定义一个整型变量:int guess;然后就可以编写如下代码:guess = Integer.parseInt(input.readLine());通过input.readLine从控制台读取输入,并且用Integer.parseInt把获取的字符串类型的输入转换成整型,然后赋给guess变量。Eclipse又给你脸色看了—...

weixin_39611037的博客 226

【RT-DETR改进涨点】ResNet18、34、50、101等多个版本移植到ultralytics仓库(RT-DETR官方一比一移植)

本文是本专栏的第一篇改进,我将RT-DETR官方版本中的ResNet18、ResNet34、ResNet50、ResNet101移植到ultralytics仓库,网上很多改进机制是将基础版本的也就是2015年发布的ResNet移植到ultralytics仓库中,但是其实RT-DETR实验的ResNet和其是有很大区别的在其中有很多细节上的不同(文章中我也会列出举例)

Snu77的博客 7223

咖啡馆 java游戏_Java咖啡馆——编写猜数字游戏(4)

首先,while语句判断返回一个布尔值的expression表达式,如果返回值为true,则执行下面语句,之后再测试expression表达式再执行语句,以此往复,直到expression表达式返回false为止。do-while语句与while语句非常相似,语法是:do {statement(s)} while ( expression );与while语句在循环顶部判断表达式真假值不同,do-...

weixin_31200621的博客 342

华为OD 面试手撕代码真题【岛屿的周长】

0代表水,1代表陆地,岛由陆地组成且岛内不允许有湖,让你求岛的周长。

MISAYAONE的博客 8422

C++程序无法正常启动(报0xc000007b错误)问题的详细排查

本文详细介绍了应用程序启动时遇到0xC000007B错误的排查过程。问题源于32位程序与64位运行时库的不匹配,以及缺少依赖的运行时库。通过分析系统日志、使用Windbg和检查程序位数,最终确定问题在于32位程序误引用了64位系统目录下的库文件。

dvlinker的技术专栏 1万+

Java咖啡馆(6)——编写猜数字游戏

上一回我们讲解了Java语言基础,篇幅所限,仅仅包含相当有限的Java语法知识。本期我们将在上回基础上编写一个猜数字的游戏,进一步学习Java语言基础知识。猜数字游戏  你肯定玩过猜数字游戏—游戏随机给出一个0至99(包括0和99)之间的数字,然后让你猜是什么数字。你可以随便猜一个数字,游戏

seawavecau的专栏 1325

MicroCap声学仿真介绍(六)-入耳式耳机仿真

从上图可以看出,后腔开了泄声孔后,振膜的最大位移从4.8um提升到了10um,振膜位移增加了一倍。在实际应用中,一般耳机的前腔和后腔都需要开泄声孔,开孔的大小和调音网布的阻尼需要根据客户的要求以及仿真的结果进行权衡选择。接着在主界面放置电阻、电感、电容,电阻值为Rms,电感值为Mms,电容值为Cms,如下图。假设后腔泄声孔的直径为1.2mm,宽度为0.3mm,对应调音网的阻抗为5.5e8欧姆。假设前腔泄声孔的直径为1.2mm,宽度为0.3mm,对应调音网的阻抗为5.5e8欧姆。

山无忧的博客 1802

java实现猜数字游戏6_Java咖啡馆(6)——编写猜数字游戏

switch语句switch语句是基于整型表达式的条件判断语句,猜数字用它来进行成绩判断:// 判断成绩switch (counter) {case 1:System.out.println("东渐……快来看上帝……");break;case 2:case 3:case 4:case 5:case 6:case 7:System.out.println("这么快就猜对了,你很smart啊!");b...

weixin_39995297的博客 171

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Java咖啡馆(8)——大话面向对象(下)-Java基础-Java-编程开发

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/javascript"

java专栏 292

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java咖啡馆(8)——大话面向对象(下)

 构思这篇咖啡馆的时候时值奥运圣火熊熊燃烧,看到中国奥运代表团努力为国争光,不由不决定把这次的主题献给我们的奥运健儿!面向对象编程  如果你是Java咖啡馆的常客,那么在不知不觉中你早已接触并运用过Java的面向对象知识。在这回的咖啡馆中,让我们详细剖析一个面向对象编程的实例,把知识巩固下来。  奥运是国际性的运动盛会,中国运动员自然要用英文形式的名字才便于同国际接轨。这回要编写的程序

seawavecau的专栏 675

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

上一篇: Java咖啡馆(3)——Eclipse-Java基础-Java-编程开发
下一篇: Java咖啡馆(5)——Java语言基础-Java基础-Java-编程开发
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值