20165207 实验一 Java开发环境的熟悉

一、实验报告封面

课程:Java程序设计 班级:1652 姓名:李天林 学号:20165207

实验日期:2018年4月2日 实验序号:一

实验名称:Java开发环境的熟悉

二、实验内容

命令行下Java程序的开发

首先,按照要求根据我的学号创建名为20165207exp1的目录,并在该目录下创建子目录src以及bin,如图:



然后使用vim编辑器编写带包的代码,包名为ltl,如图:



再使用javac命令配合-d参数,在exp根目录下对带包的代码进行编译,用java名令加-cp参数运行可执行文件,由于包的存在写法应为ltl.Hello(带包名的前缀)。

集成开发环境Intellj IDEA中对Java程序的开发

在ubuntu中安装社区版的idea,安装完成后运行idea:



根据我JDK的安装路径配置好JDK之后,在idea中新建项目,项目位于之前建立的exp1目录中



右击src目录新建Java类



输入老师的教程中调试idea部分的代码:



在第五行单击即可设置行断点:



点击debug菜单中的run或者使用快捷键Alt+Shift+F9,开始调试程序:



然后点击stepover或者快捷键F8进行单步执行,快捷键F7所对应的stepinto也可以进行单步执行,但会进入函数当中。所以stepover可以节省一些时间优先被选择:



在下面的for语句处设置另一个行断点,使用快捷键F9或者点击resume,可以从上一个断点运行到这个断点:



for语句循环控制变量是100,但一次一次的单步执行进行循环比较费时,可以使用条件断点就能直接跳到循环控制变量为所需要的值的情况。如图,在断点上右击,于condition框中设置想要挑到的i的值50:



设置好条件断点之后按F9或者菜单里面的resume就可以转到i=50的情况,可以看到最下面的窗口里i的值已经被更新为50了:



然后我学习尝试设置临时断点,在断点上右击然后按提示的快捷键Alt+Shift+F8,进入临时短点的设置



选中RemoveOncehit设置临时断点,关掉窗口之后,可以看到11行的断点上面有一个1,我理解是运行到这里之后断点只生效一次:



按F9运行到临时断点:



再按F7执行到下一行就可以看到临时断点被取消了:

练习题

分析思路以及最终的代码

我的学号07%9+1=8,第八题为:产生一个随机数,让用户猜测,猜错了告诉用户是大了还是小了。 并进行测试(正常情况,异常情况,边界情况)

我的思路是按照用户的要求设置随机数生成的范围,然后在此范围中生成一个随机数,再对用户的输入进行判断并且可以通过循环控制是否继续猜数以及处理用户输入的异常情况。

根据这三部分的思路我最终设计得到了如下的代码:

setRange类用来设置随机数生成的范围,Judge类用来生成随机数以及供用户猜数

import java.util.*;
class setRange {
int x;
int setMAX(){
System.out.println("请输入你希望的随机数最大值");
Scanner reader = new Scanner(System.in);
int x = reader.nextInt();
return x;
}
int setMIN(){
System.out.println("请输入你希望的随机数最小值");
Scanner reader = new Scanner(System.in);
int x = reader.nextInt();
return x;
}
}
import java.util.*;
import java.io.*;
public class Judge {
public static void main(String args[]) {
int L = -2147483648; //下边界,int能取的最小值
int H = 2147483647; //上边界,int能取的最大值
int MAX,MIN;
setRange user = new setRange();
MAX = user.setMAX();
MIN = user.setMIN();
if(MAX<MIN){ //如果输入的范围异常,处理
do{
System.out.println("MAX<MIN,请重新输入");
MAX = user.setMAX();
MIN = user.setMIN();
}while(MAX<MIN);
}
Random rand = new Random();
int ranNum = rand.nextInt(MAX-MIN+1)+MIN; //生成随机数,范围MIN-MAX
char c; //声明字符型变量,在循环结束用来记录是否继续
do{ //循环,以防出现异常或者要继续猜
try{
System.out.println("开始猜数"); //开始猜
Scanner reader = new Scanner(System.in);
int guessNum=reader.nextInt(); //被猜的数
if(guessNum==ranNum){ //猜对
System.out.println("猜对了");
}
else if((guessNum>=MIN)&&(guessNum<=MAX)&&(guessNum>ranNum)){ //大了
System.out.println("大了");
}
else if((guessNum>=MIN)&&(guessNum<=MAX)&&(guessNum<ranNum)){ //小了
System.out.println("小了");
}
else {
System.out.println("输入的数不在您设定的范围里"); //不在输入的范围内
} }
catch(InputMismatchException e){
System.out.println("输入数值超出了取值范围,异常");
}
System.out.println("--------------");
System.out.println("还猜不?输入y继续");
Scanner r = new Scanner(System.in);
String s = r.next(); //没有nextChar()这个方法,先读一个字符串
c = s.charAt(0); //读第一个y,转换成字符型,赋值给c
}while(c=='y'); //c在代码块外面声明,没有被释放
}
}

输出结果

下图包含正常情况、边界情况、异常情况的输出结果。

问题的解决过程

查找帮助手册得到生成随机数的方法:





输入过大的数据

开始时我向命令行输入了十个9发生了如下错误导致程序终止:



然后,我想先把用户的输入读取到long型数据中,然后再判断数据是否超出了int的范围如果没有超出则赋值给int型数据。但是,这种办法依旧是隔靴搔痒,如果输入超出了long的范围一样会抛出异常,导致程序终止。下面的截图中我输入long范围内的数据会提示越界,但超出其范围仍会终止:



最后,我使用了try-catch语句并且外加循环,也就是说在catch语句里抓到过大的数对应的这种异常,然后再提示用户数据过大产生异常,循环语句也给用户提供了重新猜数修正错误的空间。如果抛出异常则输出并询问是否继续猜数:

20165207 实验一 Java开发环境的熟悉的更多相关文章

  1. 20145205 实验一 Java开发环境的熟悉

    实验内容 命令行下Java程序开发 IDEA下Java程序开发.调试 练习(通过命令行和Eclipse两种方式实现,在Eclipse下练习调试程序) 实现凯撒密码,并进行测试 实验要求 使用JDK编译 ...

  2. 实验一 Java开发环境的熟悉

    实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没 ...

  3. 20145308刘昊阳 《Java程序设计》实验一 Java开发环境的熟悉 实验报告

    20145308刘昊阳 <Java程序设计>实验一报告 实验名称 Java开发环境的熟悉 实验内容 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试J ...

  4. 实验一Java开发环境的熟悉

    实验一Java开发环境的熟悉 实验内容 •命令行下Java程序开发 •IDEA下Java程序开发.调试 •练习(通过命令行和Eclipse两种方式实现,在Eclipse下练习调试程序) •实现凯撒密码 ...

  5. 20145225《Java程序设计》实验一 Java开发环境的熟悉(Linux + Eclipse)

    20145225<Java程序设计> 实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑 ...

  6. 20145208实验一 Java开发环境的熟悉

    20145208实验一 Java开发环境的熟悉 使用JDK编译.运行简单的java程序 命令行下程序开发 在命令行下建立实验目录,然后创建并进入该目录后的子目录. 编译并运行一个代码 使用IDEA 编 ...

  7. 实验一 Java开发环境的熟悉(Linux + Eclipse)

    学号 20175206 实验一 <Java开发环境的熟悉>实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实 ...

  8. 实验一 Java开发环境的熟悉(Linux + Idea) 20175301李锦然

    https://gitee.com/ShengHuoZaiDaXue/20175301.git 实验一 Java开发环境的熟悉(Linux + Idea) 实验内容 1.使用JDK编译.运行简单的Ja ...

  9. 2018-2019-2 实验一 Java开发环境的熟悉

    实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA编辑.编译.运行.调试Java程序 实验知识点 1. JVM.JRE.JDK的安装位置与区别: 2. 命令行运行javac:ja ...

随机推荐

  1. option 选不中问题

    function appAndBuz(appName,buzName,areaCenterCode){ //appName,buzName下拉框的值start $.ajax({ type: " ...

  2. ReactNative For Android 框架启动核心路径剖析

    版权声明:本文由王少鸣原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/144 来源:腾云阁 https://www.qclo ...

  3. JavaWeb温习之防止表单重复提交

    表单重复提交主要有以下三种情况: 1. 在网络延迟的情况下让用户有时间点击多次submit按钮导致表单重复提交 2. 表单提交后用户点击[刷新]按钮导致表单重复提交 3. 用户提交表单后,点击浏览器的 ...

  4. 【BZOJ2815】[ZJOI2012]灾难 拓扑排序+LCA

    [BZOJ2815][ZJOI2012]灾难 题目描述 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从 ...

  5. 【SharePoint 2010】将Sharepoint Server 2010部署到WINDOWS 7

    1.部署-安装环境: 在这里先说明一下:2007的版本中我们只能装在WINDOWS 2003 SERVER 上,这种限制在2010被彻底打破了.我们可以将它安装在VISTA/WINDOWS 7/SER ...

  6. MYSQL-max_binlog_cache_size参数

    max_binlog_cache_size 解释:这是设置最大二进制日志的缓存区大小的变量.若处理多语句事务时需要的内存大小比设置值大的话就会提示一个error:Multi-statement tra ...

  7. jQuery --- 收集表单

    第一种:常用获取对应表单的value值进行收集: 第二种:用jQuery的 serializeArray() 方法收集: <form id="change"> < ...

  8. thinkphp发起网络请求

    常规做法使用CURL方法: private function http_request($url,$data = null,$headers=array()){ $curl = curl_init() ...

  9. MariaDB快速选择最适合您的需要的存储引擎

    1.Xtradb和InnoDB是一个很好的通用事物存储引擎.通常不确定选用何种存储引擎时,Xtradb和InnoDB是最佳的选择. 2.MyISAM和Aria,占用空间小,系统之间容易复制.MyISA ...

  10. 使用MySQLMTOP监控MySQL性能(二)

    一.服务器角色 服务器角色 172.18.35.29 10.160.22.14 (MySQL Master) 10.160.22.47 (MySQL Slave) 监控点 YES NO NO 被监控点 ...