《太原理工大學(xué)java實驗報告.doc》由會員分享,可在線閱讀,更多相關(guān)《太原理工大學(xué)java實驗報告.doc(29頁珍藏版)》請在裝配圖網(wǎng)上搜索。
本科實驗報告
課程名稱: Java語言程序設(shè)計
實驗項目: Java實驗
實驗地點: 致遠(yuǎn)樓
專業(yè)班級: 軟件 學(xué)號:201500
學(xué)生姓名:
指導(dǎo)教師:
2017年 1月
實驗1 Java語言基礎(chǔ)
1.實驗?zāi)康?
(1) 通過實驗,掌握J(rèn)ava語言程序設(shè)計的基本方法。
(2) 學(xué)會Java語言中標(biāo)示符的命名、運算符和表達式的應(yīng)用。
(3) 熟練地掌握J(rèn)ava程序流程控制語句的應(yīng)用。
2.實驗內(nèi)容
(1) 編寫應(yīng)用程序,計算100(含100)以內(nèi)所有偶數(shù)的和。
package first;
public class f1 {
public static void main(String s[])
{
int sum=0;
for(int i=0;i<=100;i=i+2) sum=sum+i;
System.out.println("和為"+sum);
}
}
(2) 編寫一個程序,求1-100間的素數(shù)。
package test1;
public class f3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("100內(nèi)的素數(shù)為:");
loop: for (int i = 2; i < 100; i++)
{
for (int j = 2; j < i; j++)
{
if (i % j == 0)
{
continue loop;
}
}
System.out.print(" " + i);
}
}
}
(3) 使用for循環(huán)語句,編寫程序輸出以下圖案。
☆
☆☆☆
☆☆☆☆☆
☆☆☆☆☆☆☆
☆☆☆☆☆
☆☆☆
☆
package test1;
public class f11 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 1; i <= 4; i++) {
for (int k = 0; k <= 4 - i; k++) {
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("☆");
}
System.out.println();
}
for (int i = 3; i > 0; i--) {
for (int k = 0; k <=4-i; k++) {
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("☆");
}
System.out.println();}
}
}
3.實驗預(yù)習(xí)
(1) 復(fù)習(xí)本章所學(xué)內(nèi)容。
(2) 寫出實驗內(nèi)容中第(2)、(3)題兩個程序的源代碼,作為預(yù)習(xí)報告。
4.實驗結(jié)論
實驗過程中,注意記錄以下內(nèi)容:
(1) 遇到的問題及解決辦法。
在編寫星星程序時,不會它的算法,通過百度,然后自己試運行,得出了最后的結(jié)果。另外,在程序中遇到問題,積極的問了同學(xué),解決了我的問題。
(2) 實驗體會。
我覺得在編寫程序時,要細(xì)心并且要有耐心,認(rèn)真的寫每一個程序,就一定會有收獲。
實驗2 數(shù)組和字符串編程
1.實驗?zāi)康?
(1) 通過實驗,掌握J(rèn)ava語言中數(shù)組、字符串程序設(shè)計的基本方法。
(2) 較熟練地掌握J(rèn)ava程序數(shù)組的應(yīng)用、字符串處理操作的方法應(yīng)用。
2.實驗內(nèi)容
(1) 編寫一個程序,在控制臺輸入10個數(shù),按大小順序輸出。
package test1;
import java.util.Arrays;
import java.util.Scanner;
public class f11 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] num=new int[10];
@SuppressWarnings("resource")
Scanner input =new Scanner(System.in);
System.out.println("請輸入數(shù)字:");
for(int i=0;i<10;i++){
num[i]=input.nextInt();
}
Arrays.sort(num);
System.out.println("從小到大輸出:");
for(int index=0;index
b){
return a;
}else{
return b;
}
}
public Integer minNum(int a, int b) {
if(a>b){
return b;
}else{
return a;
}
}
public static void main(String []args){
int a=6,b=2,c=10;
question3 s=new question3();
int temp=s.maxNum(a, b);
int temp1=s.maxNum(temp, c);
System.out.println("The MaxNum is"+temp1);
int temp2=s.minNum(a, b);
int temp3=s.minNum(temp2, c);
System.out.println("The MinNum is"+temp3);
}
}
(2) 編程實現(xiàn)以下簡單超市管理,具體要求如下:
1 實現(xiàn)描述超市的類SuperMacket類,具有貨架屬性,記錄系統(tǒng)中現(xiàn)有商品,定義盤點商品的函數(shù)check(盤點各類商品的數(shù)量,并輸出盤點結(jié)果),查詢商品的函數(shù)query,并顯示查詢結(jié)果;
package sssu;
import java.util.ArrayList;
import java.util.List;
/**
* 1、實現(xiàn)描述超市的的類Suppermacket類,
* 記錄系統(tǒng)中現(xiàn)有商品(Goods類),
* 定義增加商品的函數(shù)Append,
* 刪除商品的函數(shù)Delete,
* 查詢商品的函數(shù)Query,
* 并顯示查詢結(jié)果;
*
*/
public class SuperMarket {
private List goodsList = new ArrayList();
/**
* 增加商品的
* @param goods
* @return
*/
public String append(Goods goods)
{
goodsList.add(goods);
return "添加成功";
}
/**
* 刪除商品
*/
public String delete(String name)
{String flag = null;
if(name == null){
flag = "刪除商品["+name+"]不存在 ";
}
else
{
for (int i = 0; i < goodsList.size(); i++)
{
Goods goods = goodsList.get(i);
if (goods.getName().equals(name))
{
goodsList.remove(i);
flag = "刪除商品["+name+"]成功";
break;
}
}
}
return flag;
}
/**
* 銷售
* @param goods
* @return
*/
public String sale(Goods goods)
{
String flag = "銷售商品["+goods.getName()+"]失敗";
if (goods!=null)
{
for (int i = 0; i < goodsList.size(); i++)
{
Goods goods_2 = goodsList.get(i);
if (goods_2.getName().equals(goods.getName()))
{
if (goods.getNumber()>goods_2.getNumber())
{
flag+=" 原因:庫存不足";
}
else if ((goods_2.getPrice()*goods.getNumber()) > goods.getPrice())
{
flag+=" 原因:余額不足";
}
else
{
goods_2.setNumber(goods_2.getNumber()-goods.getNumber());
flag = "銷售商品["+goods.getName()+"]成功";
}
break;
}
}
}
return flag;
} /**
* 查詢商品
* @return
*/
public List getGoodsList()
{
return goodsList;
}
public void setGoodsList(List goodsList)
{
this.goodsList = goodsList;
}
}
2 定義商品類Goods,具有商品名稱Name,商品價格Price,商品產(chǎn)地Producer等屬性,操作Sale(銷售商品,余額不足時給予提示)、Add(商品上架操作)和ShowMe(顯示商品信息)。
package sssu;
/**
* 具有商品名稱Name,
* 商品價格Price,
* 商品數(shù)量number等屬性,
* 操作Sale(銷售商品,余額不足時給予提示)、
* Add(商品上架操作)
* 和ShowMe(顯示商品信息)。
*/
public class Goods
{
private String name;
private float price;
private int number;
private String Producer;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public float getPrice()
{
return price;
}
public void setPrice(float price)
{
this.price = price;
}
public int getNumber()
{
return number;
}
public void setNumber(int number)
{
this.number = number;
}
public void Producer(String i)
{
this.Producer = i;
}
public String Producer() {
// TODO Auto-generated method stub
return Producer;
}
}
3 main函數(shù),測試以上所要求的各種功能,即可以根據(jù)菜單命令增加、刪除、查詢商品、盤點商品,以及商品銷售和商品上架的操作
提示:① 超市貨架可以使用商品數(shù)組,數(shù)組大小100表明存放100個商品。
② 注意實現(xiàn)商品查詢的多態(tài)性,要求可以根據(jù)商品的名稱或產(chǎn)地或價格查詢商品的數(shù)量。
package sssu;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* 1、實現(xiàn)描述超市的的類Suppermacket類, 記錄系統(tǒng)中現(xiàn)有商品(Goods類), 定義增加商品的函數(shù)Append,
* 刪除商品的函數(shù)Delete, 查詢商品的函數(shù)Query, 并顯示查詢結(jié)果;
* 2、定義商品類Goods,具有商品名稱Name,商品價格Price,商品數(shù)量number等屬性,操作Sale(銷售商品,余額不足時給予提示)、Add(商品上架操作)和ShowMe(顯示商品信息)。
* 3、編寫包含main方法的測試類,測試以上所要求的各種功能,即可以根據(jù)菜單命令增加、刪除和查詢商品,以及商品銷售和商品上架的操作。
*/
public class Test {
public static void main(String[] args)
{
SuperMarket market = new SuperMarket();
@SuppressWarnings("unused")
String[] label ={ "商品名稱", "商品價格", "商品數(shù)量" };
int type=-1 ;
do
{
System.out.println("=================");
System.out.println("請選擇操作類型");
System.out.println("1 添加商品");
System.out.println("2 刪除商品");
System.out.println("3 查詢商品");
System.out.println("4 銷售商品");
System.out.println("0 退出系統(tǒng)");
System.out.println("=================");
int i = 0;
do
{
try
{
type = Integer.parseInt(readString());
i = 0;
}
catch (Exception e)
{
i = 1;
System.err.println("輸入有誤");
}
}
while (i != 0);
switch (type)
{
case 1:
Goods goods = new Goods();
System.out.println("請輸入商品名稱");
goods.setName(readString());
do
{
try
{
System.out.println("請輸入商品價格");
goods.setPrice(Integer.parseInt(readString()));
i = 0;
}
catch (Exception e)
{
i = 1;
System.err.println("輸入有誤");
}
}
while (i != 0);
do
{
try
{
System.out.println("請輸入商品數(shù)量");
goods.setNumber(Integer.parseInt(readString()));
i = 0;
}
catch (Exception e)
{
i = 1;
System.err.println("輸入有誤");
}
}while (i != 0);
do
{
try
{
System.out.println("請輸入商品產(chǎn)地");
goods.Producer(readString());
i = 0;
}
catch (Exception e)
{
i = 1;
System.err.println("輸入有誤");
}
} while (i != 0);
System.out.println(market.append(goods));
break;
case 2:
System.out.println("請輸入要刪除商品的名稱");
String name = readString();
System.out.println(market.delete(name));
break;
case 3:
System.out.println("商品名稱\t商品價格\t商品數(shù)量");
for (int j = 0; j < market.getGoodsList().size(); j++)
{
Goods g = market.getGoodsList().get(j);
System.out.println(g.getName() + "\t" + g.getPrice() + "\t"
+ g.getNumber());
}
break;
case 4:
Goods goods_sals = new Goods();
System.out.println("請輸入銷售商品名稱");
goods_sals.setName(readString());
do
{
try
{
System.out.println("請輸入銷售商品價格");
goods_sals.setPrice(Integer.parseInt(readString()));
i = 0;
}
catch (Exception e)
{
i = 1;
System.err.println("輸入有誤");
}
}
while (i != 0);
do
{
try
{
System.out.println("請輸入銷售商品數(shù)量");
goods_sals.setNumber(Integer.parseInt(readString()));
i = 0;
}
catch (Exception e)
{
i = 1;
System.err.println("輸入有誤");
}
}
while (i != 0);
System.out.println(market.sale(goods_sals));
break;
default:
System.out.println("退出");
break;
}
}
while (type != 0);
}
/**** @param prompt* @return */
private static String readString()
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
try
{
str = br.readLine();
}
catch (IOException e)
{
e.printStackTrace();
}
return str;
}
}
3.實驗預(yù)習(xí)要求
復(fù)習(xí)本章所學(xué)內(nèi)容,思考以下問題:
(1) 什么是對象?什么是類?
(2) 面向?qū)ο缶幊痰奶匦杂心娜齻€?它們各自有哪些特性?
(3) Java語言在面向?qū)ο缶幊谭矫嬗心男┆毺氐奶攸c?
(4) 抽象類與接口有何異同?
4.實驗結(jié)論
(1) 遇到的問題及解決辦法。
在實驗中超市類和接口編寫遇到了問題,通過上網(wǎng)查閱和詢問同學(xué)最后得到了結(jié)果。
(2) 實驗體會。
在編寫程序時要有耐心去認(rèn)真改正錯誤,并且進行不斷的完善。
實驗4 Java異常處理
1.實驗?zāi)康?
掌握異常的概念,以及如何定義、拋出和捕獲處理異常。
2.實驗內(nèi)容
(3)在實驗三中的超市、商品類中創(chuàng)建一個自定義異常類。
要求:在定義商品類時,若銷售商品數(shù)量大于余額則作為異常處理(InsufficientFundsException)。
提示:
1 產(chǎn)生異常條件是某類商品銷售數(shù)量大于庫存額,因此是否拋出異常要先判斷該條件。
2 確定產(chǎn)生異常的方法,應(yīng)該在sale方法中產(chǎn)生異常Insufficient Funds Exception。
3 處理異常安排在調(diào)用sale的時候,因此sale方法要聲明異常,由上級方法捕獲并處理。
4 要定義好自己的異常。
程序與實驗三第三個一樣。
實驗6 圖形用戶界面編程
1.實驗?zāi)康?
掌握文本組件、按鈕和單、復(fù)選按鈕組件的使用;掌握列表的使用,鼠標(biāo)、鍵盤事件的處理;掌握布局控制的方法。
2.實驗內(nèi)容
(1) 試設(shè)計一窗口,內(nèi)含一個按鈕。開始運行時,按鈕顯示“Click Me”字樣,當(dāng)按鈕按下時,按鈕顯示為“Click Me Again”字樣,再按一次,則按鈕顯示“Click Me”字樣,依次循環(huán)。
package test1;
import java.awt.*;
import java.awt.event.*;
public class L08_03 extends Frame implements MouseListener{
/**
*
*/
private static final long serialVersionUID = 1L;
static L08_03 frm=new L08_03();
static Button btn=new Button("Click Me");
static int a=0;
public static void main(String args[]){
btn.addMouseListener(frm);
frm.setLayout(new FlowLayout());
frm.setTitle("按鈕");
frm.setSize(300,200);
frm.add(btn);
frm.setVisible(true);
}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseClicked(MouseEvent e){
a++;
if((a%2)!=0)
btn.setLabel("Click Me Again");
else btn.setLabel("Click Me");
}
}
P177書
package test1;
import java.awt.Button;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.TextEvent;
import javax.swing.JFrame;
/*
* java編程 完成下圖所示的圖形用戶界面設(shè)計,
*/
public class Demo3 {
public static void main(String[] args) {
//創(chuàng)建窗體對象
JFrame jf = new JFrame("輸入姓名");
//設(shè)置大小
jf.setSize(300, 300);
//設(shè)置居中
jf.setLocationRelativeTo(null);
//設(shè)置布局
jf.setLayout(new FlowLayout());
//設(shè)置關(guān)閉事件
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//添加label
Label stuName = new Label("姓名");
//添加文本框
final TextField tfClass = new TextField(30);
final TextField tfNo = new TextField(30);
final TextField tfName = new TextField(30);
//添加按鈕
Button confirm = new Button("確定");
Button cancel = new Button("取消");
//添加文本域
final TextArea ta = new TextArea(30,30);
//添加
jf.add(stuName);
jf.add(tfName);
jf.add(confirm);
jf.add(cancel);
jf.add(ta);
//添加事件
confirm.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
String stuName = tfName.getText().trim();
tfClass.setText("");
tfNo.setText("");
tfName.setText("");
ta.append("姓名:"+stuName+"\r\n");
}
});
cancel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
System.exit(0);
}
});
//顯示
jf.setVisible(true);
}
}
3.實驗預(yù)習(xí)
復(fù)習(xí)本章所學(xué)內(nèi)容,思考以下問題:
(1) Java語言是跨平臺的編程語言,那么圖形用戶界面如何做到跨平臺?
(2) AWT有哪些組件和容器?它們各自的使用方法是什么?
(3) AWT的事件處理模型是什么?原理又如何?
(4) 什么是Swing?它和AWT比有什么優(yōu)點?使用上有什么區(qū)別?
4.實驗結(jié)論
(1) 遇到的問題及解決辦法。
在編寫時,有些方法記不住,就會翻閱書籍,把那些組件內(nèi)容都給添加上。
(2) 實驗體會。
GUI是java中一個很有意思的編程,實現(xiàn)了可視化的界面,做完之后很有成就感。也學(xué)到了很多內(nèi)容。
實驗7 輸入與輸出
1.實驗?zāi)康?
(1) 掌握J(rèn)ava兩種基本輸入/輸出流類的使用。
(2) 掌握J(rèn)ava文件類型的使用。
(3) 掌握文件的輸入、輸出方法。
2.實驗內(nèi)容
(1) 編寫程序,實現(xiàn)從鍵盤輸入字符串并在屏幕上輸出。
package shiyan7;
import java.util.*;
public class question1 {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner scanner = new Scanner(System.in);
System.out.print("請輸入字符串: ");
String yy = scanner.nextLine();
StringTokenizer fenxi1 = new StringTokenizer(yy);
int n=fenxi1.countTokens();
String str[] = new String[n];
for(int i=0;fenxi1.hasMoreTokens();i++){
str[i]=fenxi1.nextToken();
}
for(int i=n-1;i>=0;i--){
System.out.print(str[i]+" ");
}
}
}
編寫程序,利用Java字符流文件輸入/輸出類,實現(xiàn)將源程序復(fù)制到另一個文件中。.package shiyan7;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class question3 {
public static void main(String[] args) throws IOException {
String infile = args[1].toString(); // 輸入文件
String fileout = "result.txt"; // 輸出路徑
try {
// 輸出結(jié)果
File f = new File(fileout);
FileOutputStream fout = new FileOutputStream(f);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fout));
// 輸入文件
BufferedReader br = null;
File file = new File(infile);
if (file.exists()) {
FileInputStream fin = new FileInputStream(file);
br = new BufferedReader(new InputStreamReader(fin));
}
String str = br.readLine();
int n = 0;
while (str != null && !str.isEmpty()) {
n++;
str = br.readLine();
bw.write(str + "\n");
}
bw.flush();
bw.close();
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
(3)編寫一個程序,比較兩個文件的內(nèi)容是否相同。
package shiyan7;
import java.io.*;
public class question4 {
public static void main(String[] args) {
InputStream file1;
InputStream file2;
byte buffer1[];
byte buffer2[];
int fileSize1 = 0;
int fileSize2 = 0;
try {
file1 = new FileInputStream(args[0]);
file2 = new FileInputStream(args[1]);
fileSize1 = file1.available();
fileSize2 = file2.available();
// read data from the files
buffer1 = new byte[fileSize1];
buffer2 = new byte[fileSize2];
if (fileSize1 != fileSize2) {
System.out.println("The two files are different!");
System.exit(0);
}
file1.read(buffer1);
file1.read(buffer2);
int cursor = 0;
while (cursor < fileSize1) {
if (buffer1[cursor] != buffer2[cursor]) {
System.out.println("The two files are different!");
鏈接地址:http://m.appdesigncorp.com/p-6488038.html