![]() |
CSCI A201/A597 and I210
|
1. Write a program that asks the user for an integer (size
,)
allocates an array of size
prices (prices are stored as
double
) and then asks the user to enter size
prices, one by one, each price on a line.
Once the user finishes entering the prices, your program should compute the average of all the prices entered and should print it.
After that the program prints all the elements in the array, one element per line. For each element
Then print the array one more time, but this time in reversed order.
Example:
prompt> java Practical Please enter the size: 4 Thank you, please enter the 4 prices below. Price 1: 1 Price 2: 1 Price 3: 2 Price 4: 2 Thank you! The average is: 1.5 The array you entered is: 0: 1.0 (**) 1: 1.0 (**) 2: 2.0 (0.5) 3: 2.0 (0.5) And backwards: 3: 2.0 (0.5) 2: 2.0 (0.5) 1: 1.0 (**) 0: 1.0 (**) Thanks for using this program!
Here's a solution:
class Practical { public static void main(String[] args) { ConsoleReader console = new ConsoleReader(System.in); System.out.print("Please enter the size: "); int size = console.readInt(); double[] prices = new double[size]; System.out.print("Thank you, please enter the "); System.out.println(size + " prices below."); double sum = 0; for (int i = 0; i < prices.length; i++) { System.out.print("Price " + (i + 1) + ": "); prices[i] = console.readDouble(); sum += prices[i]; } System.out.println("Thank you!"); double average = sum / prices.length; System.out.println("The average is: " + average); System.out.println("The array you entered is:"); for (int i = 0; i < prices.length; i++) { if (prices[i] <= average) { System.out.println(i + ": " + prices[i] + " (**)"); } else { System.out.println(i + ": " + prices[i] + " (" + (prices[i] - average) + ") "); } } System.out.println("And backwards:"); for (int i = prices.length - 1; i >= 0; i--) { if (prices[i] <= average) { System.out.println(i + ": " + prices[i] + " (**)"); } else { System.out.println(i + ": " + prices[i] + " (" + (prices[i] - average) + ") "); } } System.out.println("Thanks for using this program!"); } }
2. Write a program that simulates a vending machine that
sells items which are worth 65 cents. Your program
(called Vending
) starts by greeting the
user, then accepting coins. The machine accepts one
coin at a time and understands the following coins:
nickel
dime
and
quarter
Example run:
prompt> java Vending Welcome. Please enter coins: coin> nickel 60 cents remaining coin> quarter 35 cents remaining coin> quarter 10 cents remaining coin> quarter Thank you. Your change is: 15 cents. Thanks for using this program.
Here's a possible solution:
class Vending { public static void main(String[] args) { ConsoleReader console = new ConsoleReader(System.in); System.out.println("Welcome. Please enter coins:"); int amount = 0; final int PRICE = 65; while (amount < PRICE) { String coin; System.out.print("coin> "); coin = console.readLine(); if (coin.equals("nickel")) { amount += 5; } else if (coin.equals("dime")) { amount += 10; } else if (coin.equals("quarter")) { amount += 25; } if (amount < 65) { System.out.println((PRICE - amount) + " cents remaining."); } else { System.out.println("Thank you. Your change is: " + (amount - PRICE) + " cents."); } } System.out.println("Thanks for using this program."); } }
3. Write a program that reads a two-dimensional square array of positive
integers from the user, then calculates the average of the elements in
the array and prints it back with all the even numbers replaced by an
uppercase E and all the odd ones replaced by an uppercase O. The user
inputs the size first, then enters size
lines of
size
numbers each. You don't need to do any error checking.
Example:
prompt> java Practical Hello and please enter the size: 4 Thanks, please start entering the lines of the array (4 numbers per line). Enter line 0> 1 2 3 4 Enter line 1> 2 3 4 1 Enter line 2> 3 4 1 2 Enter line 3> 4 3 2 1 Great. The average is: 2.5 Here's the array re-written: O E O E E O E O O E O E E O E O Thanks for using this program!
Here's a possible solution:
import java.util.*; class Practical { public static void main(String[] args) { ConsoleReader console = new ConsoleReader(System.in); System.out.print("Hello and please enter the size: "); int size = console.readInt(); System.out.println("Thanks, please start entering the lines " + "of the array (" + size + " numbers per line.)"); int[][] a = new int[size][size]; String line; double sum = 0; for (int i = 0; i < size; i++) { System.out.print("Enter line " + i + "> "); line = console.readLine(); StringTokenizer st = new StringTokenizer(line); for (int j = 0; j < size; j++) { // program-friendy user a[i][j] = Integer.parseInt(st.nextToken()); sum += a[i][j]; } } System.out.println("Great. The average is: " + sum / (size * size)); System.out.println("Here's the array re-written:"); for (int i = 0; i < size; i++) { for (int j = 0; j < a[i].length; j++) { if (a[i][j] % 2 == 0) { System.out.print("E "); } else { System.out.print("O "); } } System.out.println(); } System.out.println("Thanks for using this program!"); } }
4. Write a program that reads two arrays of integers that the user is specifying on two lines. The user need not specify the size of the arrays, just the arrays, one per line. Then if the two arrays are of the same length the program calculates and prints an array that results from adding the elements of the two arrays one by one. Otherwise the program reports that the addition cannot be done because the arrays are not of the same length.
Example:
prompt> java Practical Welcome to the program! Please enter the first array: 1 2 3 4 Thank you. Please enter the second array: 4 3 2 1 Thank you. The arrays have the same length. The resulting array is: 5 5 5 5 Thanks for using this program.
Here's a possible solution:
import java.util.*; class Practical { public static void main(String[] args) { System.out.println("Welcome to the program!"); System.out.print("Please enter the first array: "); ConsoleReader console = new ConsoleReader(System.in); String line = console.readLine(); StringTokenizer a = new StringTokenizer(line); // for counting StringTokenizer b = new StringTokenizer(line); // for actual elements int size = 0; while (a.hasMoreTokens()) { a.nextToken(); size += 1; } int[] one = new int[size]; for (int i = 0; i < size; i++) { one[i] = Integer.parseInt(b.nextToken()); } System.out.println("Thank you."); // Notice that what follows is identical to the fragment above System.out.print("Please enter the second array: "); line = console.readLine(); a = new StringTokenizer(line); // for counting b = new StringTokenizer(line); // for actual elements size = 0; while (a.hasMoreTokens()) { a.nextToken(); size += 1; } int[] two = new int[size]; for (int i = 0; i < size; i++) { two[i] = Integer.parseInt(b.nextToken()); } // Now the new part if (one.length != two.length) { System.out.println("Sorry, arrays not of same length."); } else { System.out.println("The arrays have the same length."); int[] result = new int[one.length]; for (int i = 0; i < result.length; i++) result[i] = one[i] + two[i]; System.out.print("The resulting array is: "); for (int i = 0; i < result.length; i++) { System.out.print(result[i] + " "); } System.out.println(); } System.out.println("Thanks for using this program."); } }
5. Write a program that simulates a vendor that sells books
of stamps which are worth 3 dollars and 40 cents each. (The
vendor only sells books, each book is $3.40).
Your program
(called Vendor
) starts by greeting the user, then
accepting money. Your vendor accepts the following monies only:
cent
nickel
dime
quarter
and
dollar
Example run:
prompt> java Vendor Welcome. We sell stamps ($3.40) Please enter money: enter> nickel nickel dollar dollar quarter Thanks. Your credit is $2.35 I need $1.05 more. enter> cent cent Thanks. Your credit is $2.37 I need $1.03 more. enter> dollar quarter Thanks. Your credit is $3.62 The stamps are yours. Your change is: $0.22 Thanks for using this program.
Here's a possible solution:
import java.util.*; class Vendor { public static void main(String[] args) { System.out.print("Welcome. We sell stamps ($3.40) "); System.out.println("Please enter money: "); ConsoleReader console = new ConsoleReader(System.in); String line; int amount = 0; while (amount < 340) { System.out.print("enter> "); line = console.readLine(); StringTokenizer st = new StringTokenizer(line); while (st.hasMoreTokens()) { String coin = st.nextToken(); if (coin.equals("cent")) { amount += 1; } else if (coin.equals("nickel")) { amount += 5; } else if (coin.equals("dime")) { amount += 10; } else if (coin.equals("quarter")) { amount += 25; } else if (coin.equals("dollar")) { amount += 100; } } System.out.print ("Thanks. Your credit is: $" + amount / 100.0 ); if (amount >= 340) { System.out.println(" The stamps are yours."); if (amount > 340) { System.out.println ("Your change is: $" + (amount - 340) / 100.0); } } else { System.out.println (" I need $" + (340 - amount) / 100.0 + " more."); } } System.out.println("Thanks for using this program."); } }
6. Write a program that creates a two-dimensional array and fills it with random integers which have values between -50 and 50. The number of lines and columns should be specified by the user on the command line. Your program should show the array to the user and then count and report the number of negative values in the array (strictly less than zero).
Example:
prompt> java Practical 2 3 Welcome to the array generation program! We will generate a 2 by 3 array of random integers now. Please wait. ... Done. Here's the array: 23 -8 12 -20 1 -49 This array contains 3 negative numbers. Thanks for using this program!
Here's a possible solution:
import java.util.*; class Practical { public static void main(String[] args) { System.out.println("Welcome to the array generation program!"); int lines = Integer.parseInt(args[0]), cols = Integer.parseInt(args[1]); System.out.println("We will generate a " + lines + " by " + cols + " array of random integers now. Please wait."); Random generator = new Random(); int[][] data = new int[lines][cols]; for (int i = 0; i < lines; i++) for (int j = 0; j < cols; j++) data[i][j] = generator.nextInt(100) - 50; System.out.println("... Done."); System.out.println("Here's the array: "); int count = 0; for (int i = 0; i < lines; i++) { for (int j = 0; j < cols; j++) { System.out.print(data[i][j] + " "); if (data[i][j] < 0) { count += 1; } } System.out.println(); } System.out.println("This array contains " + count + " negative numbers."); System.out.println("Thanks for using this program."); } }