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. lower()

    lower() 用于把字符串中的大写字母转换成小写字母 In [1]: str = "Hello World" In [2]: str.lower() Out[2]: 'hello ...

  2. VS2015编译GEOS3.5.1源码

    官网下载下来的geos3.5.1,执行CMakeLists.txt,发现会报错:GenerateSourceGroups 去github上搜索geos,然后去\cmake\modules目录下复制一份 ...

  3. linux下用gcc如何生成预处理、汇编等文件

    [gcc -E test.c -o test.i------>预处理文件生成.i 文件.] 1.c语言程序生成过程 C语言程序的生成过程可以简单的分为:编辑.预处理.编译.汇编.链接五个阶断. ...

  4. 使用C#语言实现一些功能

    今天由于是周六,所以就没讲课啦,于是我就仔细看啦几道还没掌握的题,然后总结啦一下. 一.三级联动 像这个三级联动吧,感觉在做网站时间肯定会用到啦,但是那时间肯定不会是这样子做的啦,不可能把所有的省市区 ...

  5. 原生JS,实现图片可拖拽,并且移动四个角和四条变能够自由变换图片大小

    网上搜的资料,源码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  6. 【linux】安装rar,并解压被压缩成多个rar的文件

    rar  官网:http://www.rarsoft.com/download.htm 选择  RAR for  linux   (注意你的系统是32位还是64位) 1 安装命令: $ cd /roo ...

  7. 开源的PaaS方案:在OpenStack上部署CloudFoundry (一)简介

    目录(?)[-] OpenStack简介 OpenStack是一个美国国家航空航天局和Rackspace合作研发的以Apache许可证授权并且是一个自由软件和开放源代码项目 OpenStack是一个云 ...

  8. Excel 2010 统计行数

    1. 首先选择一个空行 2.然后点击如下:公式 --- 3. 第一行:填写“103”,当然我也不能明白为啥填写103.照做就是了. 4.鼠标定位到 第二行 “Ref1”位置,然后 鼠标+shfit 按 ...

  9. Suricata规则配置

    Suricata 规则配置 IDS/IPS/WAF IPS.IDS和WAF分别是入侵防御系统和入侵检测系统以及WEB应用防火墙的简称,很多人说这些玩意不就是盒子吗已经过时了,其实不是,SIEM其实是有 ...

  10. 04.ActiveMQ与Spring JMS整合

        SpringJMS使用参考:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jms.html ...