+ All Categories
Home > Documents > CSE 292 Java Programming Professor Tong Lai Yu Homework 5...

CSE 292 Java Programming Professor Tong Lai Yu Homework 5...

Date post: 07-Aug-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
16
CSE 292 Java Programming Professor Tong Lai Yu Homework 5 Santiago Campero 1) Follow the tutorial of the link, http://developer.android.com/resources/tutorials/views/hello-gridview.html to create the Grid View of the HelloWorld example in Android. Replace some of the icons provided by the site by your own icons. Choose Android version 2.3.3. Program Run
Transcript
Page 1: CSE 292 Java Programming Professor Tong Lai Yu Homework 5 ...cse.csusb.edu/tongyu/courses/cs292/homework/soln5/Campero2.pdf · private EditText tip20EditText; // displays 20% tip

CSE 292 Java ProgrammingProfessor Tong Lai Yu

Homework 5Santiago Campero

1) Follow the tutorial of the link,

http://developer.android.com/resources/tutorials/views/hello-gridview.html to create the Grid View of the HelloWorld example in Android. Replace some of the icons provided by the site by your own icons. Choose Android version 2.3.3.

Program Run

Page 2: CSE 292 Java Programming Professor Tong Lai Yu Homework 5 ...cse.csusb.edu/tongyu/courses/cs292/homework/soln5/Campero2.pdf · private EditText tip20EditText; // displays 20% tip

ImageAdapter.Java

package com.example.hellogridview;import android.content.Context;import android.view.View;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.GridView;import android.view.ViewGroup;public class ImageAdapter extends BaseAdapter { private Context mContext;

public ImageAdapter(Context c) { mContext = c; } public int getCount() { return mThumbIds.length; } public Object getItem(int position) { return null; } public long getItemId(int position) { return 0; } // create a new ImageView for each item referenced by the Adapter public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView; if (convertView == null) { // if it's not recycled, initialize some attributes imageView = new ImageView(mContext); imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); imageView.setPadding(8, 8, 8, 8); } else { imageView = (ImageView) convertView; } imageView.setImageResource(mThumbIds[position]); return imageView; } // references to our images private Integer[] mThumbIds = { R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7, R.drawable.sample_0, R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7, R.drawable.sample_0, R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7 };}

Page 3: CSE 292 Java Programming Professor Tong Lai Yu Homework 5 ...cse.csusb.edu/tongyu/courses/cs292/homework/soln5/Campero2.pdf · private EditText tip20EditText; // displays 20% tip

MainActivity.Java

package com.example.hellogridview;

import android.os.Bundle;import android.app.Activity;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.GridView;import android.widget.Toast;import android.view.*;

public class MainActivity extends Activity {

@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

GridView gridview = (GridView) findViewById(R.id.gridview); gridview.setAdapter(new ImageAdapter(this));

gridview.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id)

{ Toast.makeText(MainActivity.this, "" + position,

Toast.LENGTH_SHORT).show(); } });}

}

Main.XML

<?xml version="1.0" encoding="utf-8"?><GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:columnWidth="90dp" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:stretchMode="columnWidth" android:gravity="center"/>

Page 4: CSE 292 Java Programming Professor Tong Lai Yu Homework 5 ...cse.csusb.edu/tongyu/courses/cs292/homework/soln5/Campero2.pdf · private EditText tip20EditText; // displays 20% tip

2) Follow the instructions of the following document, which is from your textbook,

Tip Calculator to create the Tip Calculator. The following is the source code of the problem:

TipCalculator.zip

Program Run

Page 5: CSE 292 Java Programming Professor Tong Lai Yu Homework 5 ...cse.csusb.edu/tongyu/courses/cs292/homework/soln5/Campero2.pdf · private EditText tip20EditText; // displays 20% tip

TipCalculator.Java

// TipCalculator.java// Calculates bills using 5, 10, 15 and custom percentage tips.

package com.deitel.tipcalculator;

import android.app.Activity;

import android.os.Bundle;

import android.text.Editable;

import android.text.TextWatcher;

import android.widget.EditText;

import android.widget.SeekBar;

import android.widget.SeekBar.OnSeekBarChangeListener;

import android.widget.TextView;

// main Activity class for the TipCalculator

public class TipCalculator extends Activity

{

// constants used when saving/restoring state

private static final String BILL_TOTAL = "BILL_TOTAL";

private static final String CUSTOM_PERCENT = "CUSTOM_PERCENT";

private double currentBillTotal; // bill amount entered by the user

private int currentCustomPercent; // tip % set with the SeekBar

private EditText tip10EditText; // displays 10% tip

private EditText total10EditText; // displays total with 10% tip

private EditText tip15EditText; // displays 15% tip

private EditText total15EditText; // displays total with 15% tip

private EditText billEditText; // accepts user input for bill total

Page 6: CSE 292 Java Programming Professor Tong Lai Yu Homework 5 ...cse.csusb.edu/tongyu/courses/cs292/homework/soln5/Campero2.pdf · private EditText tip20EditText; // displays 20% tip

private EditText tip20EditText; // displays 20% tip

private EditText total20EditText; // displays total with 20% tip

private TextView customTipTextView; // displays custom tip percentage

private EditText tipCustomEditText; // displays custom tip amount

private EditText totalCustomEditText; // displays total with custom tip

// Called when the activity is first created.

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState); // call superclass's version

setContentView(R.layout.main); // inflate the GUI

// check if app just started or is being restored from memory

if ( savedInstanceState == null ) // the app just started running

{

currentBillTotal = 0.0; // initialize the bill amount to zero

currentCustomPercent = 18; // initialize the custom tip to 18%

} // end if

else // app is being restored from memory, not executed from scratch

{

// initialize the bill amount to saved amount

currentBillTotal = savedInstanceState.getDouble(BILL_TOTAL);

// initialize the custom tip to saved tip percent

currentCustomPercent =

savedInstanceState.getInt(CUSTOM_PERCENT);

} // end else

Page 7: CSE 292 Java Programming Professor Tong Lai Yu Homework 5 ...cse.csusb.edu/tongyu/courses/cs292/homework/soln5/Campero2.pdf · private EditText tip20EditText; // displays 20% tip

// get references to the 10%, 15% and 20% tip and total EditTexts

tip10EditText = (EditText) findViewById(R.id.tip10EditText);

total10EditText = (EditText) findViewById(R.id.total10EditText);

tip15EditText = (EditText) findViewById(R.id.tip15EditText);

total15EditText = (EditText) findViewById(R.id.total15EditText);

tip20EditText = (EditText) findViewById(R.id.tip20EditText);

total20EditText = (EditText) findViewById(R.id.total20EditText);

// get the TextView displaying the custom tip percentage

customTipTextView = (TextView) findViewById(R.id.customTipTextView);

// get the custom tip and total EditTexts

tipCustomEditText = (EditText) findViewById(R.id.tipCustomEditText);

totalCustomEditText =

(EditText) findViewById(R.id.totalCustomEditText);

// get the billEditText

billEditText = (EditText) findViewById(R.id.billEditText);

// billEditTextWatcher handles billEditText's onTextChanged event

billEditText.addTextChangedListener(billEditTextWatcher);

// get the SeekBar used to set the custom tip amount

SeekBar customSeekBar = (SeekBar) findViewById(R.id.customSeekBar);

customSeekBar.setOnSeekBarChangeListener(customSeekBarListener);

} // end method onCreate

// updates 10, 15 and 20 percent tip EditTexts

Page 8: CSE 292 Java Programming Professor Tong Lai Yu Homework 5 ...cse.csusb.edu/tongyu/courses/cs292/homework/soln5/Campero2.pdf · private EditText tip20EditText; // displays 20% tip

private void updateStandard()

{

// calculate bill total with a ten percent tip

double tenPercentTip = currentBillTotal * .1;

double tenPercentTotal = currentBillTotal + tenPercentTip;

// set tipTenEditText's text to tenPercentTip

tip10EditText.setText(String.format("%.02f", tenPercentTip));

// set totalTenEditText's text to tenPercentTotal

total10EditText.setText(String.format("%.02f", tenPercentTotal));

// calculate bill total with a fifteen percent tip

double fifteenPercentTip = currentBillTotal * .15;

double fifteenPercentTotal = currentBillTotal + fifteenPercentTip;

// set tipFifteenEditText's text to fifteenPercentTip

tip15EditText.setText(String.format("%.02f", fifteenPercentTip));

// set totalFifteenEditText's text to fifteenPercentTotal

total15EditText.setText(

String.format("%.02f", fifteenPercentTotal));

// calculate bill total with a twenty percent tip

double twentyPercentTip = currentBillTotal * .20;

double twentyPercentTotal = currentBillTotal + twentyPercentTip;

// set tipTwentyEditText's text to twentyPercentTip

Page 9: CSE 292 Java Programming Professor Tong Lai Yu Homework 5 ...cse.csusb.edu/tongyu/courses/cs292/homework/soln5/Campero2.pdf · private EditText tip20EditText; // displays 20% tip

tip20EditText.setText(String.format("%.02f", twentyPercentTip));

// set totalTwentyEditText's text to twentyPercentTotal

total20EditText.setText(String.format("%.02f", twentyPercentTotal));

} // end method updateStandard

// updates the custom tip and total EditTexts

private void updateCustom()

{

// set customTipTextView's text to match the position of the SeekBar

customTipTextView.setText(currentCustomPercent + "%");

// calculate the custom tip amount

double customTipAmount =

currentBillTotal * currentCustomPercent * .01;

// calculate the total bill, including the custom tip

double customTotalAmount = currentBillTotal + customTipAmount;

// display the tip and total bill amounts

tipCustomEditText.setText(String.format("%.02f", customTipAmount));

totalCustomEditText.setText(

String.format("%.02f", customTotalAmount));

} // end method updateCustom

// save values of billEditText and customSeekBar

@Override

protected void onSaveInstanceState(Bundle outState)

Page 10: CSE 292 Java Programming Professor Tong Lai Yu Homework 5 ...cse.csusb.edu/tongyu/courses/cs292/homework/soln5/Campero2.pdf · private EditText tip20EditText; // displays 20% tip

{

super.onSaveInstanceState(outState);

outState.putDouble(BILL_TOTAL, currentBillTotal);

outState.putInt(CUSTOM_PERCENT, currentCustomPercent);

} // end method onSaveInstanceState

// called when the user changes the position of SeekBar

private OnSeekBarChangeListener customSeekBarListener =

new OnSeekBarChangeListener()

{

// update currentCustomPercent, then call updateCustom

@Override

public void onProgressChanged(SeekBar seekBar, int progress,

boolean fromUser)

{

// sets currentCustomPercent to position of the SeekBar's thumb

currentCustomPercent = seekBar.getProgress();

updateCustom(); // update EditTexts for custom tip and total

} // end method onProgressChanged

@Override

public void onStartTrackingTouch(SeekBar seekBar)

{

} // end method onStartTrackingTouch

@Override

public void onStopTrackingTouch(SeekBar seekBar)

Page 11: CSE 292 Java Programming Professor Tong Lai Yu Homework 5 ...cse.csusb.edu/tongyu/courses/cs292/homework/soln5/Campero2.pdf · private EditText tip20EditText; // displays 20% tip

{

} // end method onStopTrackingTouch

}; // end OnSeekBarChangeListener

// event-handling object that responds to billEditText's events

private TextWatcher billEditTextWatcher = new TextWatcher()

{

// called when the user enters a number

@Override

public void onTextChanged(CharSequence s, int start,

int before, int count)

{

// convert billEditText's text to a double

try

{

currentBillTotal = Double.parseDouble(s.toString());

} // end try

catch (NumberFormatException e)

{

currentBillTotal = 0.0; // default if an exception occurs

} // end catch

// update the standard and custom tip EditTexts

updateStandard(); // update the 10, 15 and 20% EditTexts

updateCustom(); // update the custom tip EditTexts

} // end method onTextChanged

@Override

Page 12: CSE 292 Java Programming Professor Tong Lai Yu Homework 5 ...cse.csusb.edu/tongyu/courses/cs292/homework/soln5/Campero2.pdf · private EditText tip20EditText; // displays 20% tip

public void afterTextChanged(Editable s)

{

} // end method afterTextChanged

@Override

public void beforeTextChanged(CharSequence s, int start, int count,

int after)

{

} // end method beforeTextChanged

}; // end billEditTextWatcher

} // end class TipCalculator

Page 13: CSE 292 Java Programming Professor Tong Lai Yu Homework 5 ...cse.csusb.edu/tongyu/courses/cs292/homework/soln5/Campero2.pdf · private EditText tip20EditText; // displays 20% tip

3) The following are provided:• Lines.java • LinesJPanel

Follow the comments '/* .. */' to finish the programs.

Program Run

Lines.Java

package edu.CSE292.HW5c;

//Lab Exercise 2 Solution: Lines.java//This program draws lines of different colorsimport java.awt.Color;import javax.swing.JFrame;public class Lines{public static void main( String args[] ){ // create frame for LinesJPanel JFrame frame = new JFrame( "Lines" ); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

LinesJPanel linesJPanel = new LinesJPanel(); frame.add( linesJPanel ); // add linesJPanel to frame frame.setSize( 300, 300 ); // set frame size frame.setVisible( true ); // display frame} // end main} // end class Lines

Page 14: CSE 292 Java Programming Professor Tong Lai Yu Homework 5 ...cse.csusb.edu/tongyu/courses/cs292/homework/soln5/Campero2.pdf · private EditText tip20EditText; // displays 20% tip

LinesJPanel.Java

package edu.CSE292.HW5c;

//Lab Exercise 2 Solution: LinesJPanel.java//This program draws lines of different colorsimport java.awt.Color;import java.awt.BasicStroke;import java.awt.geom.Line2D;import java.awt.Graphics;import java.awt.Graphics2D;import java.util.Random;import javax.swing.JPanel;

public class LinesJPanel extends JPanel {private Color colors[] = { Color.GREEN, Color.CYAN, Color.YELLOW, Color.DARK_GRAY, Color.RED, Color.ORANGE, Color.GRAY, Color.PINK, Color.MAGENTA };// create 10 linespublic void paintComponent( Graphics g ){ super.paintComponent( g ); setBackground( Color.BLACK ); // set JPanel background Random random = new Random(); // get random number generator int thickness = 1; // default thickness int colorChoice = 0; // default color green int lineLenght = 1; //default lenght // create 2D by casting g to Graphics 2D Graphics2D g2d = ( Graphics2D ) g; for ( int y = 60; y < 250; y += 20 ) { // choose a random color from array /* Randomly choose an element of array colors and pass it to Graphics2D method setColor to specify the drawing color */ //pickrandom integerfrom0to8 colorChoice = random.nextInt(8 ); g2d.setPaint(colors[colorChoice]); // choose a random thickness from 1-20 /* Use Graphics2D method setStroke to randomly set the thickness of a line */ //pickrandom integerfrom1to20 thickness = 1+random.nextInt(20 ); g2d.setStroke(new BasicStroke(thickness) ); // choose a random length and draw line /* Create a random length line and use Graphics2D method draw to display the lines*/ lineLenght = 1+random.nextInt(300 ); g2d.draw(new Line2D.Double(0, y, lineLenght, y ) ); } // end for} // end method paintComponent} // end class LinesJPanel

Page 15: CSE 292 Java Programming Professor Tong Lai Yu Homework 5 ...cse.csusb.edu/tongyu/courses/cs292/homework/soln5/Campero2.pdf · private EditText tip20EditText; // displays 20% tip

4) Textbook, P.763, #17.8 (Telephone Number Word Generation) Standard telephone keypads contain the digits zero through nine. The numbers two through nine each have three letters associated with them as shown below:

Digit Letter Digit Letter Digit Letter

2 A B C 5 J K L 8 T U V

3 D E F 6 M N O 9 W X Y

4 G H I 7 P R S

For ease of memorization, people develop seven-letter words that correspond to their phone numbers. For example, one might use NUMBERS to represent 686-2377.Every seven-letter phone number corresponds to many different seven-letter words, many of them unrecognizable. Write a program that, given a seven-digit number, uses a PrintStream object to write to a file every possible seven-letter word combination corresponding to that number. There are 2,187 (37 such combinations. Avoid phone numbers with digits 0 and 1.

Program Run

Page 16: CSE 292 Java Programming Professor Tong Lai Yu Homework 5 ...cse.csusb.edu/tongyu/courses/cs292/homework/soln5/Campero2.pdf · private EditText tip20EditText; // displays 20% tip

PhoneNames.Java

package edu.CSE292.HW5d;

//public class PhoneNames {

import java.util.LinkedList;import java.util.List;public class PhoneNames { // Number-to-letter mappings in order from zero to nine public static String mappings[][] = { {"0"}, {"1"}, {"A", "B", "C"}, {"D", "E", "F"}, {"G", "H", "I"}, {"J", "K", "L"}, {"M", "N", "O"}, {"P", "Q", "R", "S"}, {"T", "U", "V"}, {"W", "X", "Y", "Z"} }; public static void generateCombosHelper(List<String> combos, String prefix, String remaining) { // The current digit we are working with int digit = Integer.parseInt(remaining.substring(0, 1));

if (remaining.length() == 1) { // We have reached the last digit in the phone number, so add // all possible prefix-digit combinations to the list for (int i = 0; i < mappings[digit].length; i++) { combos.add(prefix + mappings[digit][i]); } } else { // Recursively call this method with each possible new // prefix and the remaining part of the phone number. for (int i = 0; i < mappings[digit].length; i++) { generateCombosHelper(combos, prefix + mappings[digit][i], remaining.substring(1)); } } } public static List<String> generateCombos(String phoneNumber) { // This will hold the final list of combinations List<String> combos = new LinkedList<String>();

// Call the helper method with an empty prefix and the entire // phone number as the remaining part. generateCombosHelper(combos, "", phoneNumber); return combos; } public static void main(String[] args) { String phone = "3456789"; List<String> combos = generateCombos(phone); for (String s : combos) { System.out.println(s); } }}


Recommended