vi,java,ant 和Junit 的学习报告
vi学习报告
vim在实验中的作用,应该就是用来配置bashrc文件。输入以下命令,进入bashrc文件,命令行模式(command mode)。
输入G(shift+g),直接进入文件末尾(当然鼠标操作也行)。输入i,进入插入模式(Insert mode)
输入完成之后按ESC回到命令行模式(command mode),输入:(shfit+;)进入底行模式(last line mode),再输入wq,保存后退出。
使命令生效source ~/.bashrc
大概就是这样吧
java学习报告
calculator.java
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.border.EmptyBorder;
public class Calculator extends JFrame implements ActionListener {
private JPanel cp;
private JTextField jtf5;
private JTextField jtf1;
private JTextField jtf2;
private JButton jtf3;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Calculator frame = new Calculator();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Calculator() {
setTitle("Calculator");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 100);
setLocationRelativeTo(null);
cp = new JPanel();
cp.setLayout(new GridLayout(2, 5));
setContentPane(cp);
JPanel jp1 = new JPanel();
jtf1 = new JTextField(3);
jtf3 = new JButton(" ");
jtf2 = new JTextField(3);
JButton jtf4 = new JButton("=");
jtf5 = new JTextField(3);
jp1.add(jtf1);
jp1.add(jtf3);
jp1.add(jtf2);
jp1.add(jtf4);
jp1.add(jtf5);
JPanel jp2 = new JPanel();
JButton jb1 = new JButton("+");
jb1.addActionListener(this);
JButton jb2 = new JButton("-");
jb2.addActionListener(this);
JButton jb3 = new JButton("*");
jb3.addActionListener(this);
JButton jb4 = new JButton("/");
jb4.addActionListener(this);
JButton jb5 = new JButton("ok");
jb5.addActionListener(this);
jp2.add(jb1);
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
jp2.add(jb5);
cp.add(jp1);
cp.add(jp2);
}
@Override
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
String result ;
double d1 = Double.parseDouble(jtf1.getText());
double d2 = Double.parseDouble(jtf2.getText());
if (command.equals("+")) {
jtf3.setText("+");
} else if (command.equals("-")) {
jtf3.setText("-");
} else if (command.equals("*")) {
jtf3.setText("*");
} else if(command.equals("/")){
jtf3.setText("/");
}
if(command.equals("ok")){
if (jtf3.getText().equals("+")) {
result = (d1+d2)+"";
} else if (jtf3.getText().equals("-")) {
result = (d1-d2)+"";
} else if (jtf3.getText().equals("*")) {
result = (d1*d2)+"";
} else if(jtf3.getText().equals("/")){
result = (d1/d2)+"";
}else{
result = "Error";
}
jtf5.setText(result);
}
}
}
- 这个代码很好理解,
Calculator
构造函数,主要处理Calculator的布局,Calculator的私有成员,private JTextField jtf5; private JTextField jtf1;private JTextField jtf2;private JButtonjtf3;
分别对应输出结果,第一个操作数,第二个操作数,操作符,因为这四个变量需要改变,其他的直接在构造函数中写死就行。 JPanel
相当于一个容器,用来容纳JTextField
,JButton
之类的控件,当然也可以嵌套一个JPanel
容器,将容器add进入就可以。cp = new JPanel();cp.setLayout(new GridLayout(2, 5));
设置整体布局两行五列。public void actionPerformed(ActionEvent e)
,所有事件都用这个函数处理,因为前面必要的button加了addActionListener
,所以一旦点击了button,就会触发这个函数,解析命令内容,得到数据,再把运算结果写回去就可以了。
ant学习报告
<?xml version="1.0" encoding="UTF-8" ?>
<project name="HelloWorld" default="run" basedir=".">
<property name="src" value="src"/>
<property name="dest" value="classes"/>
<property name="jar" value="jar"/>
<target name="init">
<mkdir dir="${dest}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${dest}"/>
</target>
<target name="build" depends="compile">
<jar jarfile="${jar}/HelloWorld.jar" basedir="${dest}"/>
</target>
<target name="run" depends="build">
<java classname="Calculator" fork="true" classpath="${jar}/HelloWorld.jar"/>
</target>
<target name="clean">
<delete dir="${dest}" />
<delete file="${jar}" />
</target>
<target name="rerun" depends="clean,run">
<ant target="clean" />
<ant target="run" />
</target>
</project>
ant主要将手动命令处理文件自动化。
target
表示处理的每一步,name
表示该步骤的名称,用depends
定义每个步骤之间的逻辑关系。${dest}
类似这样的操作,是引用,比如开始写了<property name="dest" value="classes"/>
,后面再写`,就代表新创建一个classes的文件夹。- 还有
javac
,java
,jar
键值对,不难理解。唯一可能的问题在run的缓解,打开javaGUI的时候会闪退,加上fork="true"就可以了
,所以就是<java classname="Calculator" fork="true" classpath="${jar}/HelloWorld.jar"/>
这样子了。
Junit学习报告
Junit单元测试模块
HelloWorld.java
import java.util.*;
public class HelloWorld{
String str;
public void hello(){
str = "Hello World!";
}
public String getStr(){
return str;
}
}
HelloWorldTest.java
import static org.junit.Assert.*;
import org.junit.Test;
public class HelloWorldTest{
public HelloWorld helloworld = new HelloWorld();
@Test
public void testHello(){
helloworld.hello();
assertEquals("Hello World!",helloworld.getStr());
}
}
一般来说测试程序会在类名后面加Test,在方法前面加test,而且使用assertEquals
函数测试。
主要还是环境配置问题
在bashrc文件中写入下面内容就可以,其中junit-4.9.jar的地址自己定义,对于相应写入的地址。
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_91
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/home/administrator/Downloads/junit-4.9.jar:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
编译就可以用如下命令
javac HelloWorldTest.java
java org.junit.runner.JUnitCore HelloWorldTest
运行结果如下就为成功
SonarQube的使用
因为云平台已经配置好了环境直接用就可以了。
用下面命令开启服务
进入到目录下,新建sonar-project.propertites文件
sonar-project.propertites
#required metadata
#projectKey
sonar.projectKey = Part1
sonar.projectName = Part1
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8
sonar.modules=java-module
#Java module
java-module.sonar.projectName=Java Module
java-module.sonar.language=java
#
java-module.sonar.sources=.
java-module.sonar.projectBaseDir=Part1
按照这个模式写,如果要切换模块只要把代码中的三处Part1改成其他文件。
在该目录下输入sonar-runner
如果成功的话可以看到这个界面
然后在浏览器中输入http:\localhost:9000就可以看到下面的界面
GridWorld的环境配置
再次编辑bashrc文件,在$CLASSPATH中加入下一句就可以。
://home/administrator/Destop/GridWorldCode/gridworld.jar
到目录下直接运行
出现这个界面就ok了