美文网首页
cs106A-MIT-过滤掉了图形部分

cs106A-MIT-过滤掉了图形部分

作者: 暗黑破坏球嘿哈 | 来源:发表于2017-03-30 07:54 被阅读76次

    content from MIT-cs106A
    枚举,接口,搜索算法,标准库
    课程内容:163

    /**
     * The Student class keeps track of the following pieces of data
     * about a student: the student's name, ID number, and the number
     * of credits the student has earned toward graduation.
     * All of this information is entirely private to the class.
     * Clients can obtain this information only by using the various
     * methods defined by the class.
     */
    
    public class Student {
        
        /* Public constants */
    
        /** The number of units required for graduation */
        public static final double UNITS_TO_GRADUATE = 180.0;
    
    
        /**
         * Creates a new Student object with the specified name and ID.
         * @param studentName The student's name as a String
         * @param studentID The student's ID number as an int
         */
        public Student(String studentName, int studentID) {
            name = studentName;
            ID = studentID;
        }
    
        /**
         * Gets the name of this student.
         * @return The name of this student
         */
        public String getName() {
            return name;
        }
    
        /**
         * Gets the ID number of this student.
         * @return The ID number of this student
         */
        public int getID() {
            return ID;
        }
    
        /**
         * Sets the number of units earned.
         * @param units The new number of units earned
         */
        public void setUnits(double units) {
            unitsEarned = units;
        }
    
        /**
         * Gets the number of units earned.
         * @return The number of units this student has earned
         */
        public double getUnits() {
            return unitsEarned;
        }
    
        /**
         * Increments the number of units earned.
         * @param additionalUnits The additional number of units earned
         */
        public void incrementUnits(double additionalUnits) {
            unitsEarned += additionalUnits;
        }
        
        /**
         * Gets the number of units earned.
         * @return Whether the student has enough units to graduate
         */
        public boolean hasEnoughUnits() {
            return (unitsEarned >= UNITS_TO_GRADUATE);
        }
        
        
        /**
         * Creates a string identifying this student.
         * @return The string used to display this student
         */
        public String toString() {
            return name + " (#" + ID + ")";
        }
    
    
        /* Private instance variables */
        private String name;        /* The student's name         */
        private int ID;             /* The student's ID number    */
        private double unitsEarned; /* The number of units earned */
    
    }
    
    /**
     * File: Stanford.java
     * -------------------
     * The program provides an example of using Student objects
     */
    
    import acm.program.*;
    
    public class Stanford extends ConsoleProgram {
        
        /* Constants */
        private static final int CS106A_UNITS = 5;
        
        public void run() {
            setFont("Times New Roman-28");
                    
            Student mehran = new Student("Mehran Sahami", 38000000);
            mehran.setUnits(3);
            printUnits(mehran);
    
            Student nick = new Student("Nick Troccoli", 57000000);
            nick.setUnits(179);
            printUnits(nick);
            
            println("Called tryToAddUnits to add to Nick's units...");
            tryToAddUnits(nick.getUnits(), CS106A_UNITS);
            printUnits(nick);
                    
            takeCS106A(mehran);
            takeCS106A(nick);
            
            printUnits(mehran);
            printUnits(nick);
        }
        
        /**
         * Prints the name and number of units that student s has,
         * as well as whether the student can graduate
         * @param s The student who we will print information for
         */
        private void printUnits(Student s) {
            println(s.getName() + " has " + s.getUnits() + " units");
            println(s.toString() + " can graduate: " + s.hasEnoughUnits());
        }
        
        /**
         * BUGGY!! -- Tries to add to numUnits, but only adds to copy!
         * @param numUnits Original number of units
         * @param numUnitsToAdd Number of units to add to original
         */
        private void tryToAddUnits(double numUnits, double numUnitsToAdd) {
            numUnits += numUnitsToAdd;
        }
    
        /**
         * States that student s takes CS106A and increments number of units
         * @param s The student who will be taking CS106A
         */
        private void takeCS106A(Student s) {
            println(s.getName() + " takes CS106A!!");
            s.incrementUnits(CS106A_UNITS);
        }
    }
    
    file reading file reading example file reading code for example
    /* 
     * FilesExample.java
     * -----------------
     * This program shows an example of reading a file.
     */
    
    /* 
    line==null can be put in while()
    String line = rd.readLine();
    while(line!=null) println();
     */
    
    import acm.program.*;
    import acm.util.*;
    import java.io.*;
    
    public class FilesExamples extends ConsoleProgram {
        
        public void run() {
            setFont("Times New Roman-24");
            
            try {
                BufferedReader rd = new BufferedReader(new FileReader("claire.txt"));
                while (true) {
                    String line = rd.readLine();
                    if (line == null) break;
                    println("Read line: [" + line + "]");
                }
                rd.close();
                
            } catch (IOException ex) {
                throw new ErrorException(ex);
            }
       
        }
        
    }
    
    /* 
     * AnotherFileExample.java
     * -----------------------
     * This program shows an example of reading a file.
     */
    
    /*
    open or create file in a method, two try-catch, convenient for debugging
    */
    
    import acm.program.*;
    import acm.util.*;
    import java.io.*;
    
    public class AnotherFileExample extends ConsoleProgram {
        
        public void run() {
            setFont("Times New Roman-24");
            
            BufferedReader rd = openFile("Please enter filename: ");
            
            try {   
                while (true) {
                    String line = rd.readLine();
                    if (line == null) break;
                    println("Read line: [" + line + "]");
                }
                rd.close();
            } catch (IOException ex) {
                throw new ErrorException(ex);
            }   
            
        }
    
        private BufferedReader openFile(String prompt) {
            BufferedReader rd = null;
            
            while (rd == null) {
                try {
                    String filename = readLine(prompt);
                    rd = new BufferedReader(new FileReader(filename));
                } catch (IOException ex) {
                    println("Can't open that file, chief.");
                }
            }
            return rd;
        }
        
        
    }
    
    /* 
     * CopyFile.java
     * -------------
     * This program shows an example of copying a text file
     * line by line.
     */
    
    import acm.program.*;
    import acm.util.*;
    import java.io.*;
    
    public class CopyFile extends ConsoleProgram {
        
        public void run() {
            setFont("Times New Roman-24");
            BufferedReader rd = openFile("Please enter filename: ");
            
            try {
                PrintWriter wr = new PrintWriter(new FileWriter("copy.txt"));
                
                while (true) {
                    String line = rd.readLine();
                    if (line == null) break;
                    println(line);  // console
                    wr.println(line);  // file
                }
                
                rd.close();
                wr.close();
                
            } catch (IOException ex) {
                throw new ErrorException(ex);
            }           
        }
    
        private BufferedReader openFile(String prompt) {
            BufferedReader rd = null;
            
            while (rd == null) {
                try {
                    String filename = readLine(prompt);
                    rd = new BufferedReader(new FileReader(filename));
                } catch (IOException ex) {
                    println("Nice try punk.  That file doesn't exist.");
                }
            }
            return rd;
        }
        
        
    }
    
    /* 
     * SimpleArrayListExample.java
     * ---------------------------
     * This program shows an example of using an ArrayList.
     */
    
    import acm.program.*;
    import java.util.*;
    
    public class SimpleArrayListExample extends ConsoleProgram {
        
        
        public void run() {
               setFont("Courier New-bold-24");
    
               ArrayList<String> strList = new ArrayList<String>();
               readStringList(strList);
               printArrayList(strList);
            
            ArrayList<Integer> intList = new ArrayList<Integer>();
                readIntList(intList);
            printArrayList(intList);
        }
        
        private void readStringList(ArrayList<String> list) {
            while (true) {
                String line = readLine("Next line: ");
                if (line.equals("")) break;
                list.add(line);
            }
        }
        
        private void printArrayList(ArrayList list) {
            println("List contains "  + list.size() + " elements");
            for(int i = 0; i < list.size(); i++) {
                println(list.get(i));   // unboxes value if needed (e.g., int)
            }
        }
    
        private void readIntList(ArrayList<Integer> list) {
            while (true) {
                int value = readInt("Next integer (-1 to stop): ");
                if (value == -1) break;
                list.add(value);    // boxes value (int) to Integer
            }
        }
    
    
    }   
    
    /* 
     * IntegerArrayListExample.java
     * ---------------------------
     * This program shows an example of using an Integer ArrayList.
     */
    
    import acm.program.*;
    import java.util.*;
    
    public class IntegerArrayListExample extends ConsoleProgram {
        
        public void run() {
                   setFont("Courier New-bold-24");
    
                   ArrayList<Integer> intList = new ArrayList<Integer>();
                readList(intList);
            printArrayList(intList);
            
                readList(intList);
            printArrayList(intList);
        }
        
        private void readList(ArrayList<Integer> list) {
            while (true) {
                int value = readInt("Next number: ");
                if (value == -1) break;
                list.add(value);    // boxes value (int) to Integer
            }
        }
        
        private void printArrayList(ArrayList list) {
            println("List contains "  + list.size() + " elements");
            for(int i = 0; i < list.size(); i++) {
                println(list.get(i));  // unboxes Integer to int
            }
        }
    
    }   
    
    /* 
     * File: AverageScores.java
     * ------------------------
     * This program shows an example of using arrays.
     */
    
    import acm.program.*;
    
    public class AverageScores extends ConsoleProgram {
        
        private static final int SENTINEL = -1;
        private static final int MAX_SCORES = 1000; // actual size
        
        public void run() {
            setFont("Courier New-bold-24");
    
            int[] midtermScores = new int[MAX_SCORES];
            int numScores = 0;              // effective size
            
            while (true) {
            int score = readInt("Score: ");
            if (score == SENTINEL) break;
            midtermScores[numScores++] = score;
        }
            
            double averageScore = computeAverage(midtermScores, numScores);
            
            println("Average score: " + averageScore);
        }
    
        private double computeAverage(int[] arr, int numScores) {
            double average = 0;
            for(int i = 0; i < numScores; i++) {
                average += arr[i];
            }
            average = average / numScores;
            return average;
        }
        
    }
    
    /* 
     * SwapExample.java
     * -----------------
     * This program shows an example of using arrays when swapping values.
     */
    
    import acm.program.*;
    
    public class SwapExample extends ConsoleProgram {
            
        public void run() {
            setFont("Courier New-bold-24");
    
            int[] array = new int[5];
            array[0] = 1;
            array[1] = 2;
            
            println("Buggy swap results:");
            swapElementsBuggy(array[0], array[1]);
            println("array[0] = " + array[0]);
            println("array[1] = " + array[1]);
            
            println("Happy swap results:");
            swapElementsHappy(array, 0, 1);
            println("array[0] = " + array[0]);
            println("array[1] = " + array[1]);
        }
    
        private void swapElementsBuggy(int x, int y) {
            int temp = x;
            x = y;
            y = temp;
        }
        
        private void swapElementsHappy(int[] arr, int pos1, int pos2) {
            int temp = arr[pos1];
            arr[pos1] = arr[pos2];
            arr[pos2] = temp;
        }
        
    }
    
    /* 
     * File: TwoDimensionalArrayExample.java
     * -------------------------------------
     * This program shows an example of using 2-dimensional arrays.
     */
    
    import acm.program.*;
    
    public class TwoDimensionalArrayExample extends ConsoleProgram {
     
        public static final int ROWS = 2;
        public static final int COLS = 3;
        
        public void run() {
                setFont("Courier New-bold-24");
    
            int[][] arr = new int[ROWS][COLS];
            initMatrix(arr);
            printMatrix(arr);
        }
    
        private void initMatrix(int[][] matrix) {
            for(int i = 0; i < matrix.length; i++) {
                for(int j = 0; j < matrix[0].length; j++) {
                    matrix[i][j] = j;
                }
            }
        }
        
        private void printMatrix(int[][] matrix) {
            for(int i = 0; i < matrix.length; i++) {
                for(int j = 0; j < matrix[0].length; j++) {
                    print(matrix[i][j] + " ");
                }
                println();
            }
        }
     
        
    }
    
    import acm.program.*;
    
    
    public class TestScores extends ConsoleProgram {
    
        // Maximum number of students in a course
        private static final int MAX_STUDENTS = 1000;
    
        public void run() {
            setFont("Times New Roman-24");
            
            int numScores = readInt("Number of scores per student: ");
            scores = new int[MAX_STUDENTS][numScores];
            
            initScores();
            
            println("Scores[0] before increment");
            printList(scores[0]);
    
            incrementScoreList(scores[0]);
            println("Scores[0] after increment");
            printList(scores[0]);
        }
    
        // Initialized score grid to all be 0
        private void initScores() {
            for(int i = 0; i < scores.length; i++) {
                for(int j = 0; j < scores[0].length; j++) {
                    scores[i][j] = 0;
                }
            }
        }
        
        // Prints every element of list on a separate line
        private void printList(int[] list) {
            for(int i = 0; i < list.length; i++) {
                println(list[i]);
            }
        }
        
        // Adds 1 to every element of list
        private void incrementScoreList(int[] list) {
            for(int i = 0; i < list.length; i++) {
                list[i]++;
            }
        }
        
        /* private instance variable */
        private int[][] scores;
    }
    
    /*
     * File: HashMapExample.java
     * -------------------------
     * This program shows an example of using a HashMap to keep
     * track of a simple phonebook (mapping names to phone numbers).
     */
    
    import acm.program.*;
    import java.util.*;
    
    public class HashMapExample extends ConsoleProgram {
        
        public void run() {
            setFont("Times New Roman-24");
            
            println("Reading in phone numbers");
            readPhoneNumbers();
    
            println("Displaying phone numbers");
            displayAllNumbers();
    
            println("Looking up phone numbers");
            lookUpNumbers();
        }
        
        // Ask the user for phone numbers to store in phonebook.
        private void readPhoneNumbers() {
            while (true) {
                String name = readLine("Enter name: ");
                if (name.equals("")) break;
                int number = readInt("Phone number (as int): ");
                phonebook.put(name, number);
            }
        }
        
        // Print out all the names/phone numbers in the phonebook.
        // (This version of the method uses iterators.)
        private void displayAllNumbers() {
            Iterator<String> it = phonebook.keySet().iterator();
            while (it.hasNext()) {
                String name = it.next();
                Integer number = phonebook.get(name);
                println(name + ": " + number);
            }
        }
    
        // Print out all the names/phone numbers in the phonebook.
        // (This version of the method uses a foreach loop.)
        private void displayAllNumbers2() {
            for(String name : phonebook.keySet()) {
                Integer number = phonebook.get(name);
                println(name + ": " + number);
            }
        }
        
        // Allow the user to lookup phone numbers in the phonebook
        // by looking up the number associated with a name.
        private void lookUpNumbers() {
            while (true) {
                String name = readLine("Enter name to lookup: ");
                if (name.equals("")) break;
                Integer number = phonebook.get(name);
                if (number == null) {
                    println(name + " not in phonebook");
                } else {
                    println(number);
                }
            }
        }
    
    
        /* Private instance variable */
        private Map<String,Integer> phonebook = new HashMap<String,Integer>();
    }   
    
    屏幕快照 2016-12-26 上午4.58.26.png
    屏幕快照 2016-12-26 上午5.02.58.png
    屏幕快照 2016-12-26 上午5.03.07.png
    primitives passes by value
    屏幕快照 2016-12-26 上午7.03.59.png
    instance variables
    屏幕快照 2016-12-26 上午7.06.53.png
    屏幕快照 2016-12-26 上午7.07.40.png
    屏幕快照 2016-12-26 上午7.08.44.png
    屏幕快照 2016-12-26 上午7.12.10.png 屏幕快照 2016-12-26 下午5.54.44.png
    屏幕快照 2016-12-26 下午5.54.51.png
    屏幕快照 2016-12-26 上午7.22.42.png
    屏幕快照 2016-12-26 上午7.39.40.png
    屏幕快照 2016-12-26 上午7.39.48.png
    屏幕快照 2016-12-26 上午7.40.00.png
    屏幕快照 2016-12-26 上午7.41.18.png
    屏幕快照 2016-12-26 上午7.41.29.png
    屏幕快照 2016-12-26 上午7.41.38.png
    屏幕快照 2016-12-26 上午7.41.46.png

    相关文章

      网友评论

          本文标题:cs106A-MIT-过滤掉了图形部分

          本文链接:https://www.haomeiwen.com/subject/bnojvttx.html