Difference between revisions of "CISC181 F2017 Lab0"
(→static void main(String[] args)) |
|||
(4 intermediate revisions by the same user not shown) | |||
Line 12: | Line 12: | ||
Use proper [https://google.github.io/styleguide/javaguide.html naming and formatting style] throughout your code. | Use proper [https://google.github.io/styleguide/javaguide.html naming and formatting style] throughout your code. | ||
+ | |||
+ | If you want to get started coding in Java before installing Android Studio, the course page has links to several online coding options. I found this one to be sufficient for this lab: [https://www.tutorialspoint.com/compile_java8_online.php codingground] (make sure you save your code somewhere else so you can access it later). | ||
===<tt>static void main(String[] args)</tt>=== | ===<tt>static void main(String[] args)</tt>=== | ||
Line 22: | Line 24: | ||
* Let the program end (no loop -- just print prompt, read response, and execute ''one'' time) | * Let the program end (no loop -- just print prompt, read response, and execute ''one'' time) | ||
+ | <!-- | ||
You may find that it becomes tedious to do all of this in the console window inside AS. You can automate this process (as the TA will for grading) by running the program from a terminal or console window as follows: | You may find that it becomes tedious to do all of this in the console window inside AS. You can automate this process (as the TA will for grading) by running the program from a terminal or console window as follows: | ||
* After your code successfully compiles, you can find the "executable" created in ... | * After your code successfully compiles, you can find the "executable" created in ... | ||
* From a terminal window of your operating system, run the program ... | * From a terminal window of your operating system, run the program ... | ||
* Instead of actually typing your inputs, you can have the program read them from a file by "piping": ... | * Instead of actually typing your inputs, you can have the program read them from a file by "piping": ... | ||
+ | --> | ||
===<tt>static void heronsFormula()</tt>=== | ===<tt>static void heronsFormula()</tt>=== | ||
Line 41: | Line 45: | ||
* The [http://en.wikipedia.org/wiki/Law_of_cosines Law of Cosines] can be used to calculate the angle ''γ'' (gamma) between ''a'' and ''b'' (second formula in Applications section of [http://en.wikipedia.org/wiki/Law_of_cosines#Applications link]). <tt>Math.acos()</tt> will give the angle in radians; please convert it to degrees and report it with <tt>System.out.println()</tt> | * The [http://en.wikipedia.org/wiki/Law_of_cosines Law of Cosines] can be used to calculate the angle ''γ'' (gamma) between ''a'' and ''b'' (second formula in Applications section of [http://en.wikipedia.org/wiki/Law_of_cosines#Applications link]). <tt>Math.acos()</tt> will give the angle in radians; please convert it to degrees and report it with <tt>System.out.println()</tt> | ||
* You might notice ''a lot'' of decimal places printed in your answers. Change your <tt>println()</tt> to [http://docs.oracle.com/javase/tutorial/java/data/numberformat.html <tt>format</tt>] as necessary to only print '''2''' digits after the decimal for ''s'', ''A'', and ''γ''. | * You might notice ''a lot'' of decimal places printed in your answers. Change your <tt>println()</tt> to [http://docs.oracle.com/javase/tutorial/java/data/numberformat.html <tt>format</tt>] as necessary to only print '''2''' digits after the decimal for ''s'', ''A'', and ''γ''. | ||
− | * To summarize: take in 3 space-separated numbers on a single line, do calculations, and print out 3 numbers on their own lines ''with nothing else'' | + | * To summarize: take in 3 space-separated numbers on a single line, do calculations, and print out 3 numbers on their own lines ''with nothing else''. If illegal values are given (negative sidelengths, or three sidelengths that cannot possibly form a triangle), then print out a one-line error message without doing any calculations. |
===<tt>static void convertSeconds()</tt>=== | ===<tt>static void convertSeconds()</tt>=== |
Latest revision as of 21:17, 4 September 2017
- Download Android Studio and install it on your machine
- Either on your machine or on an eCalc machine in lab:
- Make a new project following these instructions
- Confirm that you can build and run it (by pressing the green triangle button or choosing "Run" from the Run menu)
- Add your name and section number in a comment before the class declaration
- As explained in the subsections below, modify static void main() and create two other methods: static void heronsFormula() { ... } and static void convertSeconds() { ... }
- Submit your MyClass.java on Sakai by Monday, September 11
Use proper naming and formatting style throughout your code.
If you want to get started coding in Java before installing Android Studio, the course page has links to several online coding options. I found this one to be sufficient for this lab: codingground (make sure you save your code somewhere else so you can access it later).
static void main(String[] args)
Your main() should do the following:
- Tell the user (using println()) that they can choose either of the two functions above by entering a single number: 1 for Heron's, 2 for convert seconds
- Use the Scanner class to read that number. Check that it really is either 1 or 2
- If a valid choice is made, call the corresponding function immediately. Otherwise print an error message
- Let the program end (no loop -- just print prompt, read response, and execute one time)
static void heronsFormula()
You will compute several geometric identities involving a general triangle with sidelengths a, b, and c as shown below.
Your function should:
- Declare these sidelength variables as double, prompt the user to enter them on a single line, separated by spaces, and read each in using the Scanner class.
- Heron's Formula gives a method to compute the area A of the triangle (ignore the fact that A is also the name of one of the triangle vertices). Follow the link and use the first formula to:
- Derive the semi-perimeter s and area A from a, b, and c using Java math expressions and/or functions
- Report both s and A with System.out.println().
- The Law of Cosines can be used to calculate the angle γ (gamma) between a and b (second formula in Applications section of link). Math.acos() will give the angle in radians; please convert it to degrees and report it with System.out.println()
- You might notice a lot of decimal places printed in your answers. Change your println() to format as necessary to only print 2 digits after the decimal for s, A, and γ.
- To summarize: take in 3 space-separated numbers on a single line, do calculations, and print out 3 numbers on their own lines with nothing else. If illegal values are given (negative sidelengths, or three sidelengths that cannot possibly form a triangle), then print out a one-line error message without doing any calculations.
static void convertSeconds()
This method should ask the user to enter an integer which represents a length of time t in seconds, and then compute and print out the number of d days, h hours, m minutes, and s seconds corresponding to t on separate lines.
When you are satisfied that you can calculate d, h, m, and s correctly, use branching to modify your printing so that you:
- Start with the first non-zero time unit (i.e. do not print leading zero values)
- Print "1 day" instead of "1 days", "1 hour" instead of "1 hours", etc. where appropriate (i.e., do not use plural for a value of 1). Some example outputs are below:
If the user inputs "67", the output should be
1 minute 7 seconds
and if they input "8880" the output should be
2 hours 28 minutes 0 seconds
For this function you may assume that t is positive, and you do not have to use a long