20165228 实验一 Java开发环境的熟悉
20165228 实验一 Java开发环境的熟悉
一、实验内容及步骤
(一)使用JDK编译、运行简单的Java程序
- 命令行下Java程序开发
1.用VrtualBox打开Linux虚拟机

2.使用Alt+Ctrl+T来打开命令行

3.使用mkdir java创建一个名为java的目录,使用cd java进入该目录

4.使用mkdir 20165228创建名为学号的目录,使用cd 20165228进入该目录

5.在目录20165228下创建第一个实验目录,并进入该目录

6.创建相应的bin和src文件夹来对.java和.class进行分类

7.使用vim Hello.java来编辑该程序,编辑完成后,使用mv Hello.java src,将编辑好的程序移动到事先创建的src文件夹下


8.使用javac -d bin src/Hello.java编译程序,并将得到的class文件输出到bin目录下。然后使用java -cp bin szk.Hello运行带包的程序

(二)IDEA下Java程序开发、调试
1.进入IDEA创建项目后,右键src-->New-->Java class

2.输入HelloJDB,选择OK

3.输入代码并点击run(快捷键Alt+Shift+F10)

4.在第6行设置断点后,进行Debug(快捷键Alt+Shift+F9),程序会运行到第6行时截止,可以观察到此时的各个变量值的情况


5.此时可以进行Step into(快捷键F7)和Step over(快捷键F8)继续单步执行
- 以下是其区别
step into(快捷键F7):单步执行,遇到子函数就进入并且继续单步执行
step over(快捷键F8):是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步
step out(Shift+F8):当单步执行到子函数内时,用step out就可以执行完子函数余下部分,并返回到上一层函数。

6.在第9行再设置一个断点,使用Resume Program(快捷键F9)来跳过已确认没有问题的代码段

7.设置条件断点,然后运行,得到在该条件下的结果


(三)练习:实现简单四则运算(能支持分数,加减乘除,支持括号),并进行测试(正常情况,异常情况,边界情况)
代码如下:
import java.util.Scanner;
import java.math.BigDecimal;
public class Calculator {
public static void main(String[] args) {
String name1="+";
String name2="-";
String name3="*";
String name4="/";
Scanner scanner=new Scanner(System.in);
System.out.printf("选择四则运算:");
String str=new String(scanner.nextLine());
if(name1.equals(str)){
System.out.printf("请输入需要运算的两个数字,以空格分割:");
BigDecimal a=new BigDecimal(scanner.nextFloat());
BigDecimal b=new BigDecimal(scanner.nextFloat());
System.out.printf(a+"+"+b +"结果是%f\n",a.add(b));
}
else if(name2.equals(str)){
System.out.printf("请输入需要运算的两个数字,以空格分割:");
BigDecimal a=new BigDecimal(scanner.nextFloat());
BigDecimal b=new BigDecimal(scanner.nextFloat());
System.out.printf(a+"-"+b +"结果是%f\n",a.subtract(b));
}
else if(name3.equals(str)){
System.out.printf("请输入需要运算的两个数字,以空格分割:");
BigDecimal a=new BigDecimal(scanner.nextFloat());
BigDecimal b=new BigDecimal(scanner.nextFloat());
System.out.printf(a+"*"+b +"结果是%f\n",a.multiply(b));
}
else if(name4.equals(str)){
System.out.printf("请输入需要运算的两个数字,以空格分割:");
BigDecimal a=new BigDecimal(scanner.nextFloat());
BigDecimal b=new BigDecimal(scanner.nextFloat());
System.out.printf(a+"/"+b +"结果是%f\n",a.divide(b));
}
else System.out.printf("输入错误");
}
}
- 命令行调试

正常情况:

异常情况:

- IDEA调试
正常情况:

异常情况:

二、实验中遇到的问题
- 问题1:在设计完代码后, 调试时提示“java.lang.ClassNotFoundException: Calculator”
解决方法:
1.确认你的类库在系统的CLASSPATH下面,如果是Tomcat,则可以放在tomcat/lib/目录下面。
2 删除重复的类库,只保留最新的 - 问题2:用IDEA调试代码时,会提示找不到主类,让我很疑惑。因为命令行调试时完全正常
解决方法:
IDEA环境的问题,在项目的project structure 中,先将项目指定JDK ,然后在项目的PATH 中,将path修改为跟当前项目在一个路径下
三、实验体会与总结
- 前面的实验部分,巩固了前几周娄老师在课上强调的在目录下编译和运行子目录下的程序以及带包程序的运行知识。
- 对于后面的练习,带括号的运算对我现在的水平来说是不容易理解的,所以我只写了一个普通的四则运算程序。
- 由于未能想到四则运算的边界,所以我也没有测试其边界值。
20165228 实验一 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 ...
随机推荐
- Redis 系列之CentOS下Redis的安装
前言 安装Redis需要知道自己需要哪个版本,有针对性的安装,比如如果需要redis GEO这个地理集合的特性,那么redis版本就不能低于3.2版本,由于这个特性是3.2版本才有的.另外需要注意的是 ...
- 【LeetCode】成对交换节点
e.g. 给定链表 1->2->3->4,返回 2->1->4->3 的头节点. 我写了个常见的从头节点遍历,少量的奇数个或偶数个数据都能成功重新排列.但链表过长时 ...
- Visual Studio references中的package找不到
1. 把solution里面所有project的.net版本设成一样的 2. ERROR: This project references NuGet package(s) that are miss ...
- WebSphere静默安装教程(WAS6.1为例)
1.安装WebSphere 解压守装包: tar -zxf was_soft_64-bit.tar.gz 进入解压出的WAS目录编缉responsefile.nd.txt,将对应选项修值改成以下模样( ...
- Find a way out of the ClassLoader maze
June 6, 2003 Q: When should I use Thread.getContextClassLoader() ? A: Although not frequently asked, ...
- ubuntu下唤醒或休眠远程计算机
ubuntu让我明白,没有什么完美的东西,要想完美必须付出代价.要么花时间折腾,要么花时间赚钱买系统. 人生也是一样,所以不要期待什么完美.哪有那么好的人,在合适的时间合适的地点让你遇见,还对你有感觉 ...
- 逆袭之旅DAY15.东软实训.Oracle.约束、序列、视图、索引、用户管理、角色
2018-07-11 08:26:00 有某个学生运动会比赛信息的数据库,保存了如下的表: 运动员sporter表:(运动员编号sporterid,运动员姓名name,运动员性别sex,所属系dep ...
- day23 模块02
核能来袭--模块 2 1.nametuple() 2.os模块 3.sys模块(重点) 4.序列化 (四个函数) 5.pickle(重点) 6.json(重点中的重点) 1.nametuple() 命 ...
- css选择器思维导图
- jdk8-Optional类
概念: package com.atguigu.java8; import java.util.Optional; import org.junit.Test; /* * 一.Optional 容器类 ...