CS 121 – Intro to Programming:Java - Lecture 8 Announcements Current Owl assignment is due Wednesday. Next Owl assignment - arrays I - will be up by tomorrow morning Programming assignment 5 is up, due next week. Hand in protocol will be announced on-line tomorrow afternoon. Late rules in effect - late programs are reduced in value by half. Preregistration coming - what should you take?
Get going on program five! Here’s one thing you can do…the bouncing ball example.. Form your groups.. me your ideas, etc..
We’ve seen Java at two levels: the statement level - mechanisms for getting specific, often low-level jobs, done, e.g. assignment stmts, println, etc. the (class and) object level - mechanisms for modeling things (objects) according to an” Objects” (repositories of state) served by methods (machinery for realizing behaviors) scheme Now we’re back to a new and very important idea in statement-level thinking: arrays. Basically, arrays give us a new way to think about variables.
Think about: students in a class; seats on an airplane, rooms in a motel, positions in the deli line at a super-market. In all cases: Many variables required for representation There’s an indexing scheme for locating / identifying the variables in question Student 7 Seat 23B Room 201 Deli-line position 77 some indexing schemes are more natural than others some are two-dimensional
public class ArrayTest1{ public static void main(String[] args) { int[] firstArray = new int[10]; for(int j = 0; j < 10; j++) firstArray[j] = j*j; System.out.println("here they come"); for(int j = 0; j < 10; j++) System.out.println(firstArray[j]); } }
public class BasicArray { final static int LIMIT = 15; final static int MULTIPLE = 10; public static void main (String[] args) { int[] list = new int[LIMIT]; for (int index = 0; index < LIMIT; index++) list[index] = index * MULTIPLE; list[5] = 999; // change one array value for (int index = 0; index < LIMIT; index++) System.out.print (list[index] + " "); }
public class Test{ // all characters have a position in Unicode // Ascii comes first : // when an integer op is applied to a character, it // is automatically converted into an integer public static void main(String[] args){ int i,j; i = (int) 'a'; j = (int) 'A'; System.out.println(i + " " + j); System.out.println('a' - 'A'); System.out.println('e' - 'a');} } ´œ ----jGRASP exec: java Test œœßœ97 65 œœßœ32 œœßœ4
public class LetterCount{ // // Reads a sentence from the user and counts the number of // uppercase and lowercase letters contained in it. // public static void main (String[] args) { ConsoleWindow c = new ConsoleWindow(50,40, "my window"); final int NUMCHARS = 26; int[] upper = new int[NUMCHARS]; int[] lower = new int[NUMCHARS]; char current; // the current character being processed int other = 0; // counter for non-alphabetics c.out.println ("Enter a sentence:"); String line = c.input.readLine(); // reads line c.out.println("line length " + line.length());
// Count the number of each letter occurence for (int ch = 0; ch = 'A' && current = 'a' && current <= 'z') lower[current-'a']++; else other++; }
// Print the results c.out.println (); for (int letter=0; letter < upper.length; letter++) { c.out.print ( (char) (letter + 'A') ); c.out.print (": " + upper[letter]); c.out.print ("\t\t" + (char) (letter + 'a') ); c.out.println (": " + lower[letter]); } c.out.println (); c.out.println ("Non-alphabetic characters: " + other); } }
We’re going to write an application that rolls a pair of dice times and reports the results profile of the rolls (e.g. how many 2,3, etc came up. public class DiceTester{ public static void main(String[] args){ Dice d = new Dice(); d.multiToss(10000); d.showScoreboard(); } }
import java.util.Random; public class Dice{ Random r; int[] scoreboard = new int[13]; public Dice(){ r = new Random(); initializeScoreboard(); } public void initializeScoreboard(){ for(int j = 0; j < 13; j++) scoreboard[j] = 0;}
public int tossDie(){ return (1+r.nextInt(6)); } public int throwDice(){ return(tossDie() + tossDie()); } public void multiToss(int tossCount){ int score; for (int j = 0; j < tossCount; j++){ score = throwDice(); scoreboard[score]++; } }
public void showScoreboard(){ for(int j = 2; j < 13; j++) System.out.println("toss of " + j + " " + scoreboard[j]); }
Results: œœœ œœ´œ ----jGRASP exec: java DiceTester œœßœtoss of œœßœtoss of 3543 œœßœtoss of œœßœtoss of œœßœtoss of œœßœtoss of œœßœtoss of œœßœtoss of œœßœtoss of œœßœtoss of œœßœtoss of œœßœ œœ©œ ----jGRASP
import element.*; public class PolyTester{ public static void main(String[] args){ ConsoleWindow c = new ConsoleWindow(); DrawingWindow d = new DrawingWindow(500,200); Pt[] poly = new Pt[5]; int x, y; c.out.println("enter 5 pts - 10 ints - separated by CRs"); for(int j = 0; j < 5; j++) { x = c.input.readInt(); y = c. input.readInt(); poly[j] = new Pt(x,y); } for(int j = 1; j < 5; j++) { L = new Line(poly[j-1], poly[j]); L.drawOn(d); } L = new Line(poly[4],poly[0]); // final connector L.drawOn(d); }