groceries = ["eggs", "bread", "milk"] my_fave_things = []
stupid_list = ["Charlywawa", -23, [1, 2.6, 3], True]
print( groceries[1] ) groceries[2] = "fat-free milk" groceries = groceries + ["bacon"] print( len( my_fave_things ) ) my_fave_things.append( "Java" ) my_fave_things.insert( "Python", 0 ) groceries.remove("eggs") stupid_list.pop(2)
times
int[] times;A common error is to think that this creates the array!
times = new int[4];
int[] times = new int[4];
times[0] = 154; times[1] = 176; times[2] = 154; times[3] = 135;
System.out.println(times);
times.length
gives you the length, e.g.
System.out.println(times.length);Note this is a variable, not a method
System.out.println(times[1]);
int[] times = new int[4]; times[0] = 154; times[1] = 176; times[2] = 154; times[3] = 135;
int[] times = {154, 176, 154, 135};
int
s, double
s, boolean
s
(primitive types)
String
s, Scanner
s, Random
s, Dog
s (reference types)
String
s
String suits = {"Clubs", "Diamonds", "Hearts", "Spades"};
Dog
s
Dog[] my_sled_team = new Dog[3]; my_sled_team[0] = new Dog("Charles", 2, "Charlywawa"); my_sled_team[1] = new Dog("Charlene", 7, "Charlywawa"); my_sled_team[2] = new Dog("Charmaine", 4, "Charlywawa");
Each of the next programs has errors.
class ExerciseA { public static void main(String[] args) { String[] module_codes = {"cs2513", "cs2514", "cs2515", "cs2516"}; for (int i = 0; i < module_codes.length(); i = i + 1) { System.out.println(module_codes[i].toUpperCase()); } } }
class SolutionA {
public static void main(String[] args) {
String[] module_codes = {"cs2513", "cs2514", "cs2515", "cs2516"};
for (int i = 0; i < module_codes.length; i = i + 1) {
System.out.println(module_codes[i].toUpperCase());
}
}
}
class ExerciseB { public static void main(String[] args) { String[] module_codes = new int[4]; module_codes[1] = "cs2513"; module_codes[2] = "cs2514"; module_codes[3] = "cs2515"; module_codes[4] = "cs2516"; for (int i = 0; i < module_codes.length; i = i + 1) { System.out.println(module_codes[i].toUpperCase()); } } }
class ExerciseB { public static void main(String[] args) { String[] module_codes = new String[4]; module_codes[0] = "cs2513"; module_codes[1] = "cs2514"; module_codes[2] = "cs2515"; module_codes[3] = "cs2516"; for (int i = 0; i < module_codes.length; i = i + 1) { System.out.println(module_codes[i].toUpperCase()); } } }
class ExerciseC { public static void main(String[] args) { String[] module_codes = new String[4]; module_codes[0] = "cs2513"; module_codes[1] = "cs2514"; module_codes[2] = "cs2515"; module_codes[2] = "cs2516"; for (int i = 0; i < module_codes.length; i = i + 1) { System.out.println(module_codes[i].toUpperCase()); } } }
class ExerciseC {
public static void main(String[] args) {
String[] module_codes = new String[4];
module_codes[0] = "cs2513";
module_codes[1] = "cs2514";
module_codes[2] = "cs2515";
module_codes[3] = "cs2516";
for (int i = 0; i < module_codes.length; i = i + 1) {
System.out.println(module_codes[i].toUpperCase());
}
}
}
The subsequent slide contans a main
method that creates 52
playing cards, puts them in an array, and prints them out again
public Deck()
public void shuffle()
public Card deal()
deal
method will remove and return the last card in the array. We will write/discuss
two ways to implement it:
Arrays.copyOf
class method
Q: By the way, is shuffle
a getter or a setter? What about deal
?
Card.java
class Card { int rank; String suit; public Card(int r, String s) { rank = r; suit = s; } public boolean higher(Card c) { return rank > c.rank; } public boolean lower(Card c) { return rank < c.rank; } public String toString() { return rank + " of " + suit; } }
CardTester.java
class CardTester { public static void main(String[] args) { String[] suits = {"Clubs", "Diamonds", "Hearts", "Spades"}; Card[] cards = new Card[52]; int indexOfNextCard = 0; for (int i = 0; i < suits.length; i = i + 1) { for (int j = 1; j < 14; j = j + 1) { cards[indexOfNextCard] = new Card(j, suits[i]); indexOfNextCard = indexOfNextCard + 1; // cards[i * 13 + j - 1] = new Card(j, suits[i]); } } for (int k = 0; k < cards.length; k = k + 1) { System.out.println(cards[k]); } } }
Deck.java
(Version A)import java.util.Random; class Deck { Card[] cards; public Deck() { String[] suits = {"Clubs", "Diamonds", "Hearts", "Spades"}; cards = new Card[52]; int indexOfNextCard = 0; for (int i = 0; i < suits.length; i = i + 1) { for (int j = 1; j < 14; j = j + 1) { cards[indexOfNextCard] = new Card(j, suits[i]); indexOfNextCard = indexOfNextCard + 1; } } } public void shuffle() { Random randy = new Random(); for (int i = 0; i < cards.length; i = i + 1) { int j = randy.nextInt(cards.length); Card temp = cards[i]; cards[i] = cards[j]; cards[j] = temp; } } public Card deal() { Card c = cards[cards.length - 1]; Card[] all_but_last = new Card[cards.length - 1]; for (int i = 0; i < all_but_last.length; i= i + 1) { all_but_last[i] = cards[i]; } cards = all_but_last; return c; } }
Deck.java
(Version B)
You must import java.utils.Arrays
public Card deal() { Card c = cards[cards.length - 1]; Card[] all_but_last = Arrays.copyOf(cards, cards.length - 1); cards = all_but_last; return c; }
main
method to play the game Play Your Cards Right!
public Game()
public void play()
main
method simply creates and launches the game!This class activity shows you object-oriented thinking in action!
DeckTester.java
import java.util.Scanner; class DeckTester { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int score = 0; Deck d = new Deck(); d.shuffle(); Card currentCard = d.deal(); for (int i = 0; i < 4; i = i + 1) { System.out.print("Will the next card be higher (H) or lower (L) than a " + currentCard + "? "); String guess = sc.nextLine(); Card nextCard = d.deal(); System.out.print("It's a " + nextCard + ". "); if ((guess.equals("L") && nextCard.lower(currentCard)) || (guess.equals("H") && nextCard.higher(currentCard))) { System.out.println("Yes!"); score = score + 1; } else { System.out.println("Bad luck!"); } currentCard = nextCard; } System.out.println("You scored " + score + " out of 4."); } }
Game.java
import java.util.Scanner; class Game { public void play() { Scanner sc = new Scanner(System.in); int score = 0; Deck d = new Deck(); d.shuffle(); Card currentCard = d.deal(); for (int i = 0; i < 4; i = i + 1) { System.out.print("Will the next card be higher (H) or lower (L) than a " + currentCard + "? "); String guess = sc.nextLine(); Card nextCard = d.deal(); System.out.print("It's a " + nextCard + ". "); if ((guess.equals("L") && nextCard.lower(currentCard)) || (guess.equals("H") && nextCard.higher(currentCard))) { System.out.println("Yes!"); score = score + 1; } else { System.out.println("Bad luck!"); } currentCard = nextCard; } System.out.println("You scored " + score + " out of 4."); } }
GameTester
class GameTester { public static void main(String[] args) { Game g = new Game(); g.play(); } }