lzy291@gdut.edu.cn
《Java语言程序设计基础教程》
上机实验指导手册
实验一 Java环境演练
【目的】
①安装并配置Java运行开发环境;
②掌握开发Java应用程序的3个步骤:编写源文件、编译源文件和运行应用程序;
③掌握开发Java Applet程序的3个步骤:编写源文件、编译源文件和运行Java Applet程序;
④学习同时编译多个Java源文件。
【内容】
1.一个简单的应用程序
² 实验要求:
编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。
² 程序运行效果示例:
程序运行效果如下图所示:
² 程序模板:
Hello.java
public class Hello
{
public static void main (String args[ ])
{
【代码1】 //命令行窗口输出"你好,很高兴学习Java"
A a=new A();
a.fA();
}
}
class A
{
void fA()
{
【代码2】 //命令行窗口输出"We are students"
}
}
² 实验后的练习:
1. 编译器怎样提示丢失大括号的错误?
2. 编译器怎样提示语句丢失分号的错误?
3. 编译器怎样提示将System写成system这一错误?
4. 编译器怎样提示将String写成string这一错误?
2.一个简单的Java Applet程序
² 实验要求:
编写一个简单的Java Applet程序,并在Java Applet中写两行文字:“这是一个Java Applet程序”和“我改变了字体”。
² 程序运行效果示例:
程序运行效果如下图所示:
² 程序模板:
FirstApplet.java
import java.applet.*;
import java.awt.*;
public class FirstApplet extends Applet
{
public void paint(Graphics g)
{
g.setColor(Color.blue);
【代码1】//在Java Applet中绘制一行文字:“这是一个Java Applet 程序”
g.setColor(Color.red);
g.setFont(new Font("宋体",Font.BOLD,36));
【代码2】//在Java Applet中绘制一行文字:“我改变了字体”
}
}
² 实验后的练习:
5. 程序中的主类如果不用public修饰,编译能通过吗?
6. 程序中的主类如果不用public修饰,程序能正确运行吗?
7. 程序将paint方法误写成Paint,编译能通过么?
8. 程序将paint方法误写成Paint,运行时能看到有关的输出信息吗?
3.联合编译
² 实验要求:
编写4个源文件:Hello.java、A.java、B.java和C.java,每个源文件只有一个类,Hello.java是一个应用程序(含有main方法),使用了A、B和C类。将4个源文件保存到同一目录中,例如:C:\100,然后编译Hello.java。
² 程序运行效果示例:
程序运行效果如下图所示:
² 程序模板:
模板1:Hello.java
public class MainClass
{
public static void main (String args[ ])
{
【代码1】 //命令行窗口输出"你好,只需编译我"
A a=new A();
a.fA();
B b=new B();
b.fB();
C c=new C();
c.fC();
}
}
模板2 :A.java
public class A
{
void fA()
{
【代码2】 //命令行窗口输出"I am A"
}
}
模板3 :B.java
public class B
{
void fB()
{
【代码3】 //命令行窗口输出"I am B"
}
}
模板4 :C.java
public class C
{
void fC()
{
【代码4】 //命令行窗口输出"I am C"
}
}
² 实验后的练习:
9. 将Hello.java编译通过后,不断修改A.java源文件中的代码,比如,在命令行窗口输出“我是A类”或“我被修改了”。要求每次修改A.java源文件后,单独编译A.java,然后直接运行应用程序Hello。
10. 如果需要编译某个目录下的全部Java源文件,比如C:\1000目录,可以使用如下命令:c:\1000\javac *.java
java实验二、基本输入输出
一、实验目的
1.掌握标准输入输出处理。
2.掌握BufferedReader类的使用方法。
二、实验内容
1.运行下面的程序,掌握Java Application标准输入输出。
import java.io.*;
public class SimpleCharInOut{
public static void main(String arg[]){
char c='' '';
System.out.print("Enter a character please:");
try{
c=(char)System.in.read();
}catch(IOException e){};
System.out.println("You''re entered character "+c);
}
}
2.运行下面的程序,掌握BufferedReader类的使用方法。
import java.io.*;
public class a{
public static void main(String args[]) throws IOException{
int i;
float f,r;
BufferedReader din = new BufferedReader(new InputStreamReader(System.in));
System.out.print("input i: ");
i=Integer.parseInt(din.readLine());
System.out.print("input f: ");
f=Float.parseFloat(din.readLine());
r=i+f;
System.out.println(i+"+"+f+"="+r);
}
}
实验后的练习:
1. 去掉例子1中的try- catch后,程序应如何修改?
2. 去掉例子2中的throws IOException后,看看程序编译的结果。
3. 尝试使用Scanner类达到上述目的!
三、思考题
1.使用BufferedReader类从键盘接收一个整数和一个实数,计算它们的和,然后在屏幕上输出。
提示:关键语句如下:
BufferedReader din = new BufferedReader( new InputStreamReader(System.in));
i=Integer.parseInt(din.readLine());
f=Float.parseFloat(din.readLine());
2.本实验的实验内容1中为什么要使用try-catch语句?
实验三 Java基本数据类型与控制语句
【目的】
① 掌握char型数据和int型数据之间的相互转换,同时了解unicode字符表;
② 掌握使用if…else if多分支语句;
③ 使用if…else分支和while循环语句解决问题。
【内容】
1.输出希腊字母表。
² 实验要求:
编写一个Java应用程序,该程序在命令行窗口输出希腊字母表。
² 程序运行效果示例:
程序运行效果如下图所示:
² 程序模板:
GreekAlphabet.java
public class GreekAlphabet
{
public static void main (String args[ ])
{
int startPosition=0,endPosition=0;
char cStart='α',cEnd='ω';
【代码1】 //cStart做int型转换据运算,并将结果赋值给startPosition
【代码2】 //cEnd做int型转换运算,并将结果赋值给endPosition
System.out.println("希腊字母\'α\'在unicode表中的顺序位置:"+(int) cStart);
System.out.println("希腊字母表:");
for(int i=startPosition;i<=endPosition;i++)
{
char c='\0';
【代码3】 //i做char型转换运算,并将结果赋值给c
System.out.print(" "+c);
if((i-startPosition+1)==0)
System.out.println("");
}
}
}
² 实验后的练习:
1. 将一个double型数据直接赋值给float型变量,程序编译时提示怎样的错误?
2. 在应用程序的main方法中增加语句:
float x=0.618;
程序能编译通过么?
3. 在应用程序的main方法中增加语句:
byte y=128;
程序能编译通过么?
4. 在应用程序的main方法中增加语句:
int z=(byte)128;
程序输出变量z的值是多少?
2.回文数。
² 实验要求:
编写一个Java应用程序。用户从键盘输入一个1—9999之间的数,程序将判断这个数是几位数,并判断这个数是否是回文数。回文数是指将该数含有的数字逆序排列后得到的数和原数相同,例如12121、3223都是回文数。
² 程序运行效果示例:
程序运行效果如下图所示:
² 程序模板:
Number.java
import javax.swing.JOptionPane;
public class Number
{
public static void main(String args[])
{
int number=0,d5,d4,d3,d2,d1;
String str=JOptionPane.showInputDialog("输入一个1至99999之间的数");
number=Integer.parseInt(str);
if(【代码1】) //判断number在1至99999之间的条件
{
【代码2】 //计算number的最高位(万位)d5
【代码3】 //计算number的千位d4
【代码4】 //计算number的百位d3
d2=number0/10;
d1=number;
if(【代码5】) //判断number是5位数的条件
{
System.out.println(number+"是5位数");
if(【代码6】) //判断number是回文数的条件
{
System.out.println(number+"是回文数");
}
else
{
System.out.println(number+"不是回文数");
}
}
else if(【代码7】) //判断number是4位数的条件
{
System.out.println(number+"是4位数");
if(【代码8】) //判断number是回文数的条件码
{
System.out.println(number+"是回文数");
}
else
{
System.out.println(number+"不是回文数");
}
}
else if(【代码9】) //判断number是3位数的条件
{
System.out.println(number+"是3位数");
if(【代码10】) //判断number是回文数的条件
{
System.out.println(number+"是回文数");
}
else
{
System.out.println(number+"不是回文数");
}
}
else if(d2!=0)
{
System.out.println(number+"是2位数");
if(d1==d2)
{
System.out.println(number+"是回文数");
}
else
{
System.out.println(number+"不是回文数");
}
}
else if(d1!=0)
{
System.out.println(number+"是1位数");
System.out.println(number+"是回文数");
}
}
else
{
System.out.printf("\n%d不在1至99999之间",number);
}
}
}
² 实验后的练习:
1. 程序运行时,用户从键盘输入2332,程序提示怎样的信息?
2. 程序运行时,用户从键盘输入654321,程序提示怎样的信息?
3. 程序运行时,用户从键盘输入33321,程序提示怎样的信息?
3.猜数字游戏。
² 实验要求:
编写一个Java应用程序,实现下列功能:
1) 程序随机分配给客户一个1—100之间的整数
2) 用户在输入对话框中输入自己的猜测
3) 程序返回提示信息,提示信息分别是:“猜大了”、“猜小了”和“猜对了”。
4) 用户可根据提示信息再次输入猜测,直到提示信息是“猜对了”。
² 程序运行效果示例:
程序运行效果如下图所示:
² 程序模板:
GuessNumber.java
import javax.swing.JOptionPane;
public class GuessNumber
{
public static void main (String args[ ])
{
System.out.println("给你一个1至100之间的整数,请猜测这个数");
int realNumber=(int)(Math.random()*100)+1;
int yourGuess=0;
String str=JOptionPane.showInputDialog("输入您的猜测:");
yourGuess=Integer.parseInt(str);
while(【代码1】) //循环条件
{
if(【代码2】) //条件代码
{
str=JOptionPane.showInputDialog("猜大了,再输入你的猜测:");
yourGuess=Integer.parseInt(str);
}
else if(【代码3】) //条件代码
{
str=JOptionPane.showInputDialog("猜小了,再输入你的猜测:");
yourGuess=Integer.parseInt(str);
}
}
System.out.println("猜对了!");
}
}
² 实验后的练习:
1. 用“yourGuess>realNumber”替换【代码1】,可以么?
2. 语句:“System.out.println(“猜对了!”);”为何要放在while循环语句之后?放在while语句的循环体中合理吗?
加载中,请稍候......