Java表达式求值、杨辉三角实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.实验目的
实现杨辉三角和表达式的封装
二.实验软件环境
本实验是在MyEclipse 9.01M1编写和运行的
三.实验内容
(一)实验要求
1. 输出杨辉三角前N项,N为参数
2. 表达式求值:输入一个表达式,输出它的值,其中要用到java.util.Stack (二)实验代码
程序代码:
1)杨辉三角:
/**
*功能:用二维数组实现杨辉三角
*时间:2011-05-01
**/
package b1;
import java.io.*;
public class Pascal{
public Pascal(){
play();
}
public void play(){
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入n值:");
int n = 0;
try {
n = Integer.parseInt(br.readLine());
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int array[][] = new int[n][2*n-1];
//判断是否为奇数
if( n%2 == 1 ){
for(int i=1; i<=n; i++){
for(int j=1; j<=2*n-1 ;j++){
//首先给前5-i个元素赋值0
if(j<=n-i)
array[i-1][j-1] = 0;
//输出第一个“1”和最后一个“1”
else if((j==(n-i+1))||(j==n+i-1))
array[i-1][j-1] = 1;
else if((j < n+i-1)&&(j > n-i+1)){
if((j-i)%2 == 1)
array[i-1][j-1] = 0;
else
array[i-1][j-1] = array[i-2][j-2] + array[i-2][j];
}
}
}
}
//为偶数所进行的操作
else{
for(int i=1; i<=n; i++){
for(int j=1; j<=2*n-1; j++){
//首先给前5-i个元素赋值0
if(j<=n-i)
array[i-1][j-1] = 0;
//输出第一个“1”和最后一个“1”
else if((j==(n-i+1))||(j==n+i-1))
array[i-1][j-1] = 1;
else if((j < n+i-1)&&(j > n-i+1)){
if((j-i)%2 == 0)
array[i-1][j-1] = 0;
else
array[i-1][j-1] = array[i-2][j-2] + array[i-2][j];
}
}
}
}
/*输出数组*/
for(int i=1; i<=n; i++){
for(int j=1; j<=2*n-1; j++){
if(array[i-1][j-1] == 0){
System.out.print(" ");
}
else
System.out.print(array[i-1][j-1]);
System.out.print(" ");
}
System.out.println();
}
}
public static void main(String argc[]){
Pascal p = new Pascal();
}
}
2)表达式求值,代码如下:
1)Stack类:用来存储表达式子元素的类,代码如下:
package btwo;
public class Stack {
private int maxLen;
private int size;
private char c[];
public Stack(int maxLen) {
this.maxLen = maxLen;
c = new char[maxLen];
size = 0;
}
public void push(char v){
c[size++] = v;
}
public char pop(){
return c[--size];
}
public boolean isEmpty(){
return size == 0;
}
}
2)ExplainPostfix类:实现将输入的表达式转成后缀表达式,代码如下:
package btwo; public class ExplainPostfix {
String in; String out = "";
Stack s;
public ExplainPostfix(String in){