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. 棒谷科技java岗笔试题与初试题

    选择题 1.银行家算法的作用 2.docker镜像结构 3.docker的默认网络模式 4.spring的动态代理效率比较 5.springboot默认的json 6.springboot多profi ...

  2. easyui 时间定格为 时分

    $.fn.datetimebox.defaults.formatter = function (date) { console.log('dt formatting ' + date); if (!( ...

  3. Java中DESKeySpec类

    此类位于 javax.crypto.spec 包下.声明如下: public class DESKeySpec extends Object implements KeySpec 此类指定一个 DES ...

  4. Hadoop DBOutputFormat的使用

    最近在研究数据在HDFS和关系型数据库之间的迁移,主要使用了两种方式:一是,按照数据库要求的文件格式生成文件,然后由数据库提供的导入工具进行导入:二是采用JDBC的方式进行导入.MapReduce默认 ...

  5. RDO部署多节点OpenStack Havana(OVS+GRE)

    RDO是由红帽RedHat公司推出的部署OpenStack集群的一个基于Puppet的部署工具,可以很快地通过RDO部署一套复杂的OpenStack环境,当前的RDO默认情况下,使用Neutron进行 ...

  6. 关于layer.photos即照片显示的问题。

    在layer组件中,照片显示是不常用,今天做了一些不伤了. 在这里写出来,以备后用. 其中注意几个问题, 1.格式问题. 2.路径问题. 不同的layer有不同的格式,查看layerAPI中发现的格式 ...

  7. python的类继承与派生

    一.继承和派生简介: 其实是一个一个事物站在不同角度去看,说白了就是基于一个或几个类定义一个新的类.比如定义了动物类接着派生出了人类,你也可以说人类继承了动物类.一个意思.此外python类似于C和C ...

  8. 【BZOJ4195】[Noi2015]程序自动分析 并查集

    [BZOJ4195][Noi2015]程序自动分析 Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3 ...

  9. Mac OS X运行程序出现bad interpreter: operation not permitted的解决方案

    最近想在我的mac笔记本上安装gvim,从官网上下载了程序后竟然非常诡异的双击无法打开,命令行执行时系统报错: /bin/sh bad interpreter operation not permit ...

  10. Swift - 实现tableView单选系统样式

    // 实现tableView单选 import UIKit class ViewController: UIViewController { var tableView: UITableView! o ...