20165207 实验一 Java开发环境的熟悉
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开发环境的熟悉的更多相关文章
- 20145205 实验一 Java开发环境的熟悉
实验内容 命令行下Java程序开发 IDEA下Java程序开发.调试 练习(通过命令行和Eclipse两种方式实现,在Eclipse下练习调试程序) 实现凯撒密码,并进行测试 实验要求 使用JDK编译 ...
- 实验一 Java开发环境的熟悉
实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没 ...
- 20145308刘昊阳 《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20145308刘昊阳 <Java程序设计>实验一报告 实验名称 Java开发环境的熟悉 实验内容 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试J ...
- 实验一Java开发环境的熟悉
实验一Java开发环境的熟悉 实验内容 •命令行下Java程序开发 •IDEA下Java程序开发.调试 •练习(通过命令行和Eclipse两种方式实现,在Eclipse下练习调试程序) •实现凯撒密码 ...
- 20145225《Java程序设计》实验一 Java开发环境的熟悉(Linux + Eclipse)
20145225<Java程序设计> 实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑 ...
- 20145208实验一 Java开发环境的熟悉
20145208实验一 Java开发环境的熟悉 使用JDK编译.运行简单的java程序 命令行下程序开发 在命令行下建立实验目录,然后创建并进入该目录后的子目录. 编译并运行一个代码 使用IDEA 编 ...
- 实验一 Java开发环境的熟悉(Linux + Eclipse)
学号 20175206 实验一 <Java开发环境的熟悉>实验报告 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实 ...
- 实验一 Java开发环境的熟悉(Linux + Idea) 20175301李锦然
https://gitee.com/ShengHuoZaiDaXue/20175301.git 实验一 Java开发环境的熟悉(Linux + Idea) 实验内容 1.使用JDK编译.运行简单的Ja ...
- 2018-2019-2 实验一 Java开发环境的熟悉
实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA编辑.编译.运行.调试Java程序 实验知识点 1. JVM.JRE.JDK的安装位置与区别: 2. 命令行运行javac:ja ...
随机推荐
- EasyUI 每页展示100条数据
$(function() { //$("#bgAddTime").datebox("setValue", getTimeString()+" 00:0 ...
- 如何使用css影藏滚动条
1.单纯的一句代码: div ::-webkit-scrollbar {width: 0px;}//或者display:none 但是这代码最大的弊端就是只能在webkit内核的浏览器上进行显示,无法 ...
- JavaScript基础细讲
JavaScript基础细讲 JavaScript语言的前身叫作Livescript.自从Sun公司推出著名的Java语言之后,Netscape公司引进了Sun公司有关Java的程序概念,将自己原 ...
- split()有个坑
刚才在做DBMS课程设计的时候遇到了一个以前遇到过的问题不过这次我没有一眼认出来,想了好一会才想起来. 就是在用split()方法来分割路径名字符串的时候,比如 String path = “E:\s ...
- Android Graphviz 安装
1. Windows下使用android ADT工具dmtracedump.exe绘图在windows下使用dmtracedump绘图时,出现如下错误: 'dot' 不是内部或外部命令,也不是可运行的 ...
- C# Global.asax文件里实现通用防SQL注入漏洞程序(适应于post/get请求)
可使用Global.asax中的Application_BeginRequest(object sender, EventArgs e)事件来实现表单或者URL提交数据的获取,获取后传给SQLInje ...
- Appium中长按按钮操作
在一次项目中,appium要对某个按钮进行长按操作(大于2s),类似拍微信小视频,参考网上长按视频会报错 action1 = TouchActions(self.driver) el = self.d ...
- Unity3D笔记九 发送广播与消息、利用脚本控制游戏
一.发送广播与消息 游戏对象之间发送的广播与消息分为三种:第一种向子对象发送,将发送至该对象的同辈对象或者子孙对象中:第二种为给自己发送,发送至自己本身对象:第三种为向父对象发送,发送至该对象的同辈或 ...
- Thrift Expected protocol id ffffff82 but got 0
如果服务端配的也是noblock=false;客户端不能改成noblock=true;
- Windows使用filezilla搭建FTP服务器
参考:https://segmentfault.com/a/1190000009033181 下载软件https://filezilla-project.org/ 安装过程不详述,默认安装即可 启动软 ...