您的位置:首页 > 移动开发 > Objective-C

第二周第三天([输入一个字符串,然后输出字符串的运算结果] [object][异常][IO流,读取D盘某个文件])

2015-07-22 20:00 666 查看

目录

输入一个字符串,然后输出字符串的运算结果

object

异常

IO流,读取D盘某个文件

输入一个字符串,然后输出字符串的运算结果

[code]package com.day3_2015_7_22;
public class MyStack {
    //定义了一个数组
    private int[] array=new int[20];
    private int index=-1;
    //压栈
    public void push(int i){
        index++;//每压入一个数字,index+1,所以index++;
        array[index]=i;//把数字放到数组里
    }
    //得到index
    public int getIndex(){
        return index;
    }
    //得到最上面的数字
    public int getTop(){
        return array[index];
    }
    //出栈
    public int pop(){
        int j=array[index];
        index--;
        return j;
    }
}   
package com.day3_2015_7_22;
public class MyStackChar {
        //定义了一个数组
        private char[] array=new char[20];
        private int index=-1;
        //压栈
        public void push(char i){
            index++;//每压入一个运算符,index+1,所以index++;
            array[index]=i;//把运算符放到数组里
        }
        //得到index
        public int getIndex(){
            return index;
        }
        //得到最上面的运算符
        public char getTop(){
            return array[index];
        }
        //出栈
        public char pop(){
            char j=array[index];
            index--;
            return j;
        }
}   
package com.day3_2015_7_22;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
    //Scanner scanner=new Scanner(System.in);
    String s="5+31*2/3-6-7*5+12*2=";
    MyStack num=new MyStack();
    MyStackChar fuhao=new MyStackChar();
    String digit="";
    for (int i = 0; i < s.length(); i++) {
        char c=s.charAt(i);//将此字符串转换为一个新的字符数组。
        //如果是数字就字符串相加
        if(Character.isDigit(c)){
            digit+=c;
        }else{//不是数字就把digit压栈,
            //因为这时的digit是个字符串
            //需要用到Interger.parseInt()
            //将字符串参数作为有符号的十进制整数进行解析。
            num.push(Integer.parseInt(digit));
            //如果c是=说明要得到最终结果了,把数字、运算符都出栈进行运算,输出最后结果
            if(c=='='){
                if(fuhao.getIndex()==0){
                    int after=num.pop();
                    int before=num.pop();
                    char top=fuhao.pop();
                    int result = yunsuan(before, top, after);
                    System.out.println(result);}
                    else{
                        char top=fuhao.pop();
                        int after=num.pop();
                        int before=num.pop();
                        int m = yunsuan(before, top, after);
                        int n=num.pop();
                        char top1=fuhao.pop();
                        int result =yunsuan(n,top1,m);
                        System.out.println(result); 
        } 
            }else {
            digit ="";//把digit清空
            if (fuhao.getIndex() == -1) {
                fuhao.push(c);
            } else {
                jisuan(num, fuhao, c);
            }
            }
        }
    }
}
//这个方法主要是判断得到的这个符号是直接压栈,还是先让最上面的符号出栈计算然后再压栈
private static void jisuan(MyStack num,MyStackChar fuhao,char c){
    //如果index=-1,直接把c压栈
    if(fuhao.getIndex()==-1){
        fuhao.push(c);
        return;
    }
    //把最上面的运算符跟c比较,如果c的优先级大,把c压栈
    char top=fuhao.getTop();
    if(youxianji(c,top)){
        fuhao.push(c);
    }else{//如果c的优先级小,符号出栈,两个数字出栈进行计算,然后把结果压栈,
        //再循环之前的算法
        top=fuhao.pop();
        int after=num.pop();
        int before=num.pop();
        int result=yunsuan(before,top,after);
        num.push(result);
        jisuan(num,fuhao,c);
    }
}
//这个方法只要是定义了不同的符号如何计算
public static int yunsuan(int before, char c, int after) {
    int i = 0;
    switch (c) {
    case '+':
        i = before + after;
        break;//注意break不要忘写
    case '-':
        i = before - after;
        break;
    case '/':
        i = before / after;
        break;
    case '*':
        i = before * after;
        break;
    default://注意最后不要忘写
        break;
    }
    return i;
}
//一个判断优先级的方法
//如果c的优先级大,return ture 反之false
public static boolean youxianji(char c, char top) {
    if (c == '*' || c == '/') {
        if (top == '*' || top == '/') {
            return false;
        }
        return true;
    }
    return false;
}
}


object

[code]package com.day3_2015_7_22;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class Test2 {
    private static final Exception FileNotFoundException = null;
    public static void main(String[] args) {
//*********objec的一些构造方法的改写*****************//
//  Student zhangsan=new Student();
//  zhangsan.setName("张三");
//  zhangsan.setId(1);
//  Student lisi=new Student();
//  lisi.setId(2);
//  lisi.setName("李四");
//  Student s=new Student();
//  s.setId(1);
//  System.out.println(zhangsan.equals(s));
//************异常问题************//     
//    Student zhangsan=null;
//    System.out.println(zhangsan.getName());
      //NullPointerException空指针问题
      //不需要用try,catch捕捉,不过程序不能继续往下运行
      try{
          FileInputStream is=new FileInputStream("d://11.txt");
          //系统找不到指定文件
      }//catch错误范围大的要在下边
      catch(FileNotFoundException e){
          System.out.println("报错了");
          e.printStackTrace();
      }catch (Exception e) {
          e.printStackTrace();
      }
      System.out.println("继续运行");
    }
}   
//*********objec的一些构造方法的改写toString/equals*****************//
package com.day3_2015_7_22;
public class Student {
    int id;
    String name;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String toString(){
        return this.name;
    }
    public boolean equals(Object obj){
        if(obj!=null&&obj instanceof Student){
            return((Student)obj).getId()==this.id;
        }
        return false;
    }
}


异常

[code]package com.day3_2015_7_22;
public class MyException extends Exception{
public void printStackTrace(){
    System.out.println("不让张三当老师");
    super.printStackTrace();
}
}
package com.day3_2015_7_22;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Teacher   {
    private String name;
    public String getName(){
        return name;
    }
    public void setName(String name) throws MyException{
        if(name.equals("张三")){
            throw new MyException();
        }
        this.name=name;
    }
    public void readBook()throws FileNotFoundException,IOException{
        FileInputStream is=new FileInputStream("d://11.txt");
        is.read();
    }
}
package com.day3_2015_7_22;
public class Test3 {
public static void main(String[] args) {
    Teacher zhangsan=new Teacher();
    try{
        zhangsan.setName("张三");
    }catch(MyException e){
        System.out.println("报错了");
        e.printStackTrace();
    }
    System.out.println("程序运行完成");
}
}


IO流,读取D盘某个文件

[code]package com.day3_2015_7_22;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class Test4 {
public static void main(String[] args) {
    //IO流
    File f =new File("d://11.txt");
    try {//从输入流中读取数据的下一个字节
        byte[]arry = new byte[1024];
        InputStream is = new FileInputStream(f);
        int readindex = is.read(arry);
        System.out.println(new String(arry));
        while(readindex!=-1){
            readindex=is.read(arry);
            System.out.println(new String(arry));
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }catch(IOException e){
        e.printStackTrace();
    }
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: