Basic Java assignment due in 14 hours

bpinomoore
Assignment2.pdf

ISM3230 Assignment 2 – Working with Strings and conditionals Spring 2021

TASK

You are working for a company that provides map services (much like Google Maps). Your company’s services are not

directly web-accessible; rather, other web sites call for maps, and embed the results in their content (and pay for the

privilege of doing so).

You are working in the consulting area of the company, and your current client is FIU. The university is asking for a

custom mapping application.

Your first task is to parse out the different parts of URL for requests. In other words, you will be writing code to pull data

items from the input URL string, and store them as separate data elements. URLs look like this:

 Protocol:

o This is the method used to transfer information across the internet. Valid values for protocol include the

following: http, https, ftp, and mailto, but could be any word of any length (excluding the special

punctuation characters).

 Domain information:

o Subdomain:

 This identifies a portion of content or logic available at this URL. For example,

“fiu.instructure.com” identifies FIU’s Canvas content among all other universities’ Canvas

courses on the instructure.com site.

o Domain:

 This is the string you purchase from a domain name registry to identify your server on the web.

o Top-level domain (TLD):

 Each top-level domain is controlled by a domain name registry. Familiar TLDs include .com, .edu,

and .gov; however, almost any text string can now be used as a TLD, e.g., .valentine, .horsehair,

or .frostbite. A domain name plus a TLD serves as a unique identifier for locating your server on

the internet, so that the world can find your content or application.

o Punctuation hint:

 The dot ‘.’ character separates the subdomain from the domain name, and the domain name

from the TLD.

 The domain parts can be of any length and contain any characters except the dot ‘.’ and the

forward slash ‘/’.

 Query parameters

o First parameter: univ

 This identifies the university using a university code. Examples: “FIU”, “UF”, “NDSU”.

 The name “univ” for the parameter is fixed but can be in any case.

 This parameter is always going to be the first parameter in the URL string.

o Second parameter: map

 Latitude and Longitude: these are the data values that serve as input to the map query, and

describe the geographic point the requestor would like mapped. Latitude is the first value, and

longitude is the second value.

 The name “map” for the parameter is fixed but can be in any case.

 This parameter is always going to be the second parameter in the URL string.

The special punctuation characters have special function, here are the hints that will help you locate the different parts

of the URL string:

 The string “://” separates the protocol from the rest of the URL

 The question mark ‘?’ character separates the domain information from the query parameters.

 The ‘=’ character separates the parameter name from the parameter value for both parameters.

 The ‘&’ character separates the first parameter from the second parameter.

 The pipe ‘|’ character separates the latitude and longitude values for the map parameter.

The university would like the mapping application to react differently for map points within the boundary formed by FIU

and Tamiami Park. Thus, your second task involves checking whether the map point defined by the latitude and

longitude values in the URL lies within a box formed by SW 8 th

Street on the north, 107 th

Avenue on the east, Coral Way

on the south, and 117 th

Avenue on the west. The latitude and longitude values corresponding to these roadways are

shown on the map below:

The North, South, West, and East edge boundary values for latitude and longitude should be defined as class-level

constants in the code.

Your third task involves creating a specific output for the case when the user requests FIU as the university and at the

same time the map point falls within the defined rectangle:

 Print “FIU location requested” if the univ parameter in the URL contains the value “FIU” (in any case) AND the

latitude and longitude point lies within the box defined above.

longitude

latitude

 In all other cases, print “Conditions not met”

Your final code should do the following:

 As input, prompt the user to enter a URL.

 As output, print each data element you have parsed from the URL, following instructions below, and using the

sample output as an example.

 Print “FIU location requested” or “Conditions not met”, based on the content of the URL values in the input

string.

As you work through the instructions below, refer to slides in 3c_stringVariablesAndValues.pdf and

3d_stringMethods.pdf from today’s class material for help with character indexing and the specifics on how String

variables and String methods work.

The following table provides descriptions of a set of methods you may find useful in this assignment:

Class Method Return Type

Description

String indexOf(int ch) int Returns the index within this string of the first occurrence of the specified character ch.

String indexOf(int ch, int fromIndex) int Returns the index within this string of the first occurrence of the specified character ch, starting the search at the specified fromindex.

String indexOf(String str) int Returns the index within this string of the first occurrence of the specified substring str. The returned index represents the start of the occurrence of the substring.

String indexOf(String str, int fromIndex) int Returns the index within this string of the first occurrence of the specified substring str, starting at the specified fromindex.

String lastIndexOf(int ch) int Returns the index within this string of the last occurrence of the specified character ch.

String lastIndexOf(int ch, int fromIndex) int Returns the index within this string of the last occurrence of the specified character ch, searching backward starting at the specified fromindex.

String lastIndexOf(String str) int Returns the index within this string of the last occurrence of the specified substring str. The returned index represents the start of the occurrence of the substring.

String lastIndexOf(String str, int fromIndex) int Returns the index within this string of the last occurrence of the specified substring str, searching backward starting at the specified fromindex.

String substring(int beginIndex) String Returns a new string that is a substring of this string. The substring starts at beginindex, and continues to the end of this string.

String substring(int beginIndex, int endIndex) String Returns a new string that is a substring of this string. The substring begins at the specified beginIndex and extends to the character at index endIndex - 1.

Double parseDouble(String s) double Returns a new double initialized to the value represented by the specified String s.

Instructions:

1. Create a new NetBeans project called yourname_assignment2

2. Define class-level constants for the four values that specify the map’s boundary edges.

3. Prompt the user to enter a URL string.

4. Read the input from the keyboard, and store it in a String variable.

5. For each of the nine parts of the URL, pull the data element of interest out of the URL.

o Use the methods in the table on the previous page to do the following:

 Use the punctuation in the URL to locate each data element

 Store each data element to an appropriately-typed variable

o Include only the text portions for each data element, do not include the URL punctuation.

o HINT: for some of the elements, you will not be able to get to the data with a single method call to one

of the methods in the table. Instead, you will need to invoke a combination of these methods to parse

the needed information from the input string. If you cannot identify a single method that does what you

need, then start considering combinations of methods to reach the desired data.

o HINT: there are many possible ways to encode this logic. Your approach may not be the same as other

classmates’ approaches. As long as your logic meets the requirements in this specification, it’s a good

approach.

o HINT: you may not need all of the methods listed in the table, but all are potentially useful.

Checkpoints:

As you work through the URL string, there are many points where intermediary variables should be

checked for a correct value. Print out helpful information for debugging to the screen. For example,

print the position of found punctuation character and check that it is what you expect. Then leave the

printing line in the source code and comment it out.

6. Once you have all the data parts in the their respective variables, print them out to the screen, as seen in this

example:

7. Convert the latitude and longitude values to double-typed variables (see the Double.parseDouble

(String s) method in the table) and store them in double variables.

8. Determine whether the requested map point lies within the FIU’s boundary rectangle. You will need to make

decisions for both the latitude and longitude components and only if both components are within their limits,

the point is in the rectangle. Make sure the limits are class-level constants.

o HINT: Instead of creating a one long and complex Boolean expression, break it down into smaller

expressions and save their results in Boolean variables. Then use those variables in the final expression

that determines whether the longitude and latitude components satisfy the limits concurrently.

9. Determine whether the value of the University parameter is “FIU” (in any case).

10. Print out the “FIU location requested” string if both university parameter and the map request

parameter satisfy the conditions. Otherwise, print “Conditions not met”.

11. Check that your final printout matches the sample output. Test multiple URL strings. Be sure to match your

output to the sample, including wording, spelling, spacing, and punctuation.

Grading points:

 Use of class-level named constants

 Use of variables with meaningful names and correct types

 Input of data with user prompts

 Correctness of math calculations

 Correctness of Boolean logic (ifs)

 Conformance of output to sample output

 Code organization (input/processing/output)

 Code alignment (indentation)

SAMPLE INPUT

The following sample input is provided to give you a few test cases. Please keep in mind that your code will be tested

with input beyond these strings.

http://fiu.instructure.com/?univ=FIU&map=25.757195|-80.375829

https://www.example.gov/?UNIV=Fiu&MAP=24.664648|-82.885596

ftp://www.maprequest.pictureframe/?univ=fiu&map=25.656248|-80.376633

ftp://www.maprequest.pictureframe/?univ=FSU&map=25.757195|-80.375829

WWW://SERVICE.DOMAINNAME.TOPLEVEL/?UNIV=fiu&MAP=25.747|-80.369

HINT:

o Instead of repeatedly entering these strings as user input when developing the code, declare a string variable,

set its value in the source code to one of the examples, and use this variable for as the URL string. After your

code is tested and works on all test strings, revert back to asking the user to enter the URL.

SAMPLE OUTPUT