OK. This is going to be my first lesson. Please notice that i want everyone to download bluej from bluej.org. This is recommended. Please test it out and practice the codes listed below. Learn everything about bluej to make your life and my life easier. I have added gpdraw.jar. Please add this file to your bluej library in perferneces. The codes below might not work so please add them. Some of my pictures didn't load so please download the document file below.
all copyright belong to their rightful owner
UPLOAD GPDRAW.JAR AND A BETTER VERSION OF MY LESSON HERE IS THE files
gpdraw.jar
http://www.mediafire.com/?2zkezwwyzyj
Lesson A1
http://www.mediafire.com/?2wyj2nh2mwm
_________________________________________________________________
A1 – Introduction to Object-Oriented Programming (OOP)
1. Object-oriented programming (OOP) attempts to make programs more closely model the way people think about and deal with the world. In OOP, a program consists of a collection of interacting objects. To write such a program you need to describe different types of objects: what they know, how they are created, and how they interact with other objects. Each object in a program represents an item that has a job to do.
2. The world in which we live is filled with objects. For example, an object we are all familiar with is a drawing tool such as a pencil or pen. A drawing tool is an object, which can be described in terms of its attributes and behaviors. Attributes are aspects of an object that describe it, while behaviors are things that the object can do. The attributes of a pencil are its drawing color, width of the line it draws, its location on the drawing surface, etc. Anything that describes an object is called an attribute. Its behaviors consist of drawing a circle, drawing a line in a forward or backward direction, changing its drawing direction, etc. Anything that an object does is called a behavior. Another aspect of an object has to do with creation, which determines the initial state of an object.
3. In order to use an object within a program, we need to provide a definition for the object. This definition is called a class. The class describes how the object behaves, what kind of information it contains, and how to create objects of that type. A class can be thought of as a mold, template, or blueprint that the computer uses to create objects.
4. When building a house, a construction crew uses a blueprint to define the aspects of the house. The blueprint gives the specifications on how many bedrooms there are, how to position the electrical wiring, the size of the garage, etc. However, even two houses built from the same blueprint may have different paint colors and will have different physical locations. Clients who are buying a house may make slight modifications to these blueprints. For example, they may want a bigger garage or a smaller porch. We can see the houses built from the blueprint as objects since they are all similar in structure, but each house has its own unique attributes. In the world of programming, we can view the blueprint just like a class, i.e. a tool for creating our objects.
B. Methods
1. While a program is running, we create objects from class definitions to accomplish tasks. A task can range from drawing in a paint program, to adding numbers, to depositing money in a bank account. To instruct an object to perform a task, we send a message to it.
2. In Java, we refer to these messages as methods.
3. An object can only receive a message that it understands, which means that the message must be defined within its class.
4. Suppose we take the DrawingTool class (provided by this curriculum in the package gpdraw.jar) and create an object myPencil. In OOP terminology, we say the object myPencil is an instance of the DrawingTool class. An object can only be an instance of one class. We can visually represent an object with an object diagram, as shown in Figure 1.1.
5. These are some of the behaviors that the DrawingTool class provides:
• forward
• turnLeft
• getColor
6. To draw a line of a specified length, we call the method forward along with passing the distance to move the pencil. A value we pass to an object’s method is called an argument. A diagram of calling a method is shown below in Figure 1.2.
7. If we need to change the direction myPencil is facing, we can call the turnLeft method. This will bring a ninety-degree turn to the left. Two left turns can give us a complete reversal of direction, and three left turns essentially gives us a right turn. Notice that we do not need to send any arguments with the turnLeft method. A left turn is simply a left turn and does not need any additional information from the user. A diagram calling turnLeft is shown below in Figure 1.3.
8. The diagrams shown in Figures 1.2 and 1.3 illustrate situations in which an object carries out a request by the user but does not respond to the sender. Figure 1.2 requires arguments from the user because the user must specify how far to move, whereas Figure 1.3 operates without any specific details. However, in many situations we need an object to respond by returning a value to the sender. For example, suppose we want to know the current color that is being used for drawing. We can use the getColor method to return the value. The getColor method is illustrated returning a value to the sender in Figure 1.4 below.
C. Objects in Software
1. A program is a collection of instructions that performs a particular task on a computer. Software is a collection of one or more programs. Code refers to the actual symbols that a programmer types in that tell the computer what instructions to execute. Individuals who write programs are called programmers, software-engineers, software-architects, and coders among many other terms.
2. OOP is a strategy often employed by software developers. A programmer using an OOP strategy begins by selecting objects that can collectively solve the given problem.
3. To develop a particular program in an OOP fashion, the software developer might begin with a set of program requirements. For example:
Write a program to draw a square on a piece of paper with a pencil.
4. A way to determine the objects needed in a program is to search for the nouns of the problem. This technique suggests that the above program should have three objects: a pencil, a piece of paper, and a square.
5. Ideally, a programmer reuses an existing class to create objects, as opposed to writing code for a new class. For the purposes of our drawing example, we will use the preexisting DrawingTool and SketchPad classes for the pencil and paper objects. However, we don’t have a class for a square that is pre-made, so we must make our own.
6. Programming languages can be compared to a foreign language – the first exposure to a written example is bound to seem pretty mysterious. You don't have to understand the details of the program shown below. They will be covered in more detail in the next lesson.
import gpdraw.*;
public class DrawSquare{
private DrawingTool myPencil;
private SketchPad myPaper;
public DrawSquare(){
myPaper = new SketchPad(300, 300);
myPencil = new DrawingTool(myPaper);
}
public void draw(){
myPencil.forward(100);
myPencil.turnLeft();
myPencil.forward(100);
myPencil.turnLeft();
myPencil.forward(100);
myPencil.turnLeft();
myPencil.forward(100);
}
}
7. In OOP, we concern ourselves mostly with the objects themselves and how they relate to the other objects in the program. However, there must be a starting point for the program to begin creating objects, as the objects would obviously not be able to do anything if they did not exist. Code Sample 1.1 has no starting point and would therefore not be able to do anything by itself. Later on, we will learn how to utilize this code in an actual program.
8. The state of an object depends on its components. The DrawSquare object includes one DrawingTool object declared in the line that begins with the word DrawingTool and a SketchPad object declared in the line that begins with SketchPad. The DrawingTool object is given the name myPencil and the SketchPad object is given the name myPaper.
9. A constructor is a method with the same name as the class. The first instruction will construct a new SketchPad object named myPaper with dimensions of 300 x 300 (read as 300 by 300). The next instruction will cause a new DrawingTool object named myPencil to be constructed using the SketchPad object named myPaper.
10. An object’s behavior is determined by instructions within its methods. When the method draw() for a DrawSquare() object is called, the instructions within the draw method will execute in the order they appear. There are seven instructions in the draw method. The first instruction will cause the myPencil to move forward 100 units drawing a line as it goes. The next line tells myPencil to turn left. The remaining 5 steps repeat the process of steps to draw the remaining three sides of the square.
11. The DrawSquare example illustrates the tools that a programmer uses to write a program. A program is built from objects and classes that a programmer writes or reuses. Classes are built from instructions, and these instructions are used in such a way that they manipulate objects to perform the desired tasks.
D. Compiling and Running a Program
1. A programmer writes the text of a program using a software program called an editor. The text of a program in a particular programming language is referred to as source code, or you can simply use source or code individually. The source code is stored in a file called the source file. For example in the DrawSquare example given above, source code would be created and saved in a file named DrawSquare.java.
2. Compiling is the process of converting a program written in a high-level language into the bytecode language the Java interpreter understands. A Java compiler will generate a bytecode file from a source file if there are no errors in the source file. In the case of DrawSquare, the source statements in the DrawSquare.java source file would be compiled to generate the bytecode file DrawSquare.class. Classes inside a package, such as the gpdraw.jar, have already been compiled into bytecode for you.
3. Errors detected by the compiler are called compilation errors. Compilation errors are actually the easiest type of errors to correct. Most compilation errors are due to the violation of syntax rules. These are the basic rules of languages that programmers must follow so that the interpreter understands what to do. It is similar to grammar in a spoken language and varies from language to language.
4. The Java interpreter will process the bytecode file and execute the instructions in it.
5. If an error occurs while running the program, the interpreter will catch it and stop its execution. Errors detected by the interpreter are called run-time errors. Run-time errors are usually caused by a fault in the logic of the program, such as accidentally causing the computer to try and divide a number by zero.
SUMMARY/ REVIEW: One can think of an OOP application as a simulated world of active objects. Each object has a set of methods that can process messages of certain types, send messages to other objects, and create new objects. Programmers can either define new classes for use in their program, or they can use pre-existing classes to create the objects for their application.
HANDOUTS AND
ASSIGNMENTS: Handout A1.1, DrawingTool Class Specifications
Lab Assignment A1.1, DrawHouse
Worksheet A1.1, Object-Oriented Programming
WORKSHEET A1.1
OBJECT-ORIENTED PROGRAMMING
The following object declarations and initializations will be used for all questions. This code will create a DrawingTool object called marker and a SketchPad object called poster. The poster will have dimensions of 600 x 600, and the marker will be constructed and used on the poster. Each drawing will begin at the center of the poster at the point (0,0).
DrawingTool marker;
SketchPad poster;
poster = new SketchPad(600,600);
marker = new DrawingTool(poster);
1. Draw the figure generated by the following code segment:
marker.forward(120);
marker.turnRight(45);
marker.forward(80);
marker.turnLeft(90);
marker.forward(80);
marker.turnLeft(90);
marker.forward(80);
marker.turnLeft(90);
marker.forward(80);
2. Draw lines A and B as described by the following – note the move() method is introduced here for line B. It allows you to draw lines with fewer commands:
marker.up();
marker.turnRight(90);
marker.forward(100);
marker.down();
marker.drawString(" A");
marker.move(-100,0);
marker.up();
marker.move(-175,100);
marker.down();
marker.move(175,100);
marker.drawString(" B");
3. Write code that will draw the following figure. The lower left corner is at the point (0,0), and the length of each side of the square is 200 units. The upper left part of the mouth begins at (40,60), and the upper part of the nose begins at (100,100). The eyes each have a radius of 10 units and are centered at (60,150) and (140,150). The other key points are left for you to decide. Have fun! (Write the code on the back of this sheet)
LAB ASSIGNMENT A1.1
DrawHouse
Background:
You will be provided with a file named gpdraw.jar, which contains the code needed to implement the graphics tools to draw objects. The specifications of the drawing tools are provided in Handout A1.1 – DrawingTool. Simply place the gpdraw.jar file in the appropriate folder location so the Java compiler can find it. Then add this line of code at the top of your program and the drawing tools are available for use.
import gpdraw.*;
Assignment:
Write a program that creates a drawing area of appropriate size (try 500 x 500) and draws a house similar to the one shown below and with these specifications:
1. The house should fill up most of the drawing area, i.e. draw it big.
2. The house should be centered horizontally on the screen.
3. The house must have a sloped roof. It can be of any slope or configuration. But you cannot have a flat roof on the house.
4. Adding a door (centered) and windows is optional.
Instructions:
1. Include your name as a documentation statement and also a brief description of the program.
2. You will need to turn in (either on paper or electronically) a copy of your code and a picture of the house that resulted.
HANDOUT A1.1
DrawingTool Class Specifications
These classes are not part of Java but are available through the library named gpdraw. You must have the file gpdraw.jar in the appropriate directory where Java can access it. To have these classes available in your program, use this command:
import gpdraw.*;
Other features of gpdraw will be covered in later lessons.
DrawingTool
protected double xPos
protected double yPos
protected double direction;
protected int width;
protected boolean isDown;
protected Color color;
...
<<constructors>>
DrawingTool()
DrawingTool(SketchPad)
...
<<accessors>>
public Color getColor()
public double getDirection()
public int getWidth()
public String toString()
...
<<modifiers>>
public void down()
public void drawString(String)
public void drawCircle(double)
public void forward(double)
public void home()
public void move(double, double)
public void setColor(Color)
public void setDirection(double)
public void setWidth(int)
public void turn (double)
public void turnLeft(double)
public void turnRight(double)
public void up()
...
Invariant
A DrawingTool object
• Appears in a SketchPad Window (this window is 250 pixels wide and 250 pixels high initially, but can be constructed with different dimensions.)
• The origin (0, 0) is at the center of the drawing window.
• Is directed either up, down, left, or right.
• Is either in drawing mode or in moving mode.
Constructor Methods
public DrawingTool()
postcondition
• A new DrawingTool is created and placed in the center (0, 0) of a SketchPad window that is 250 pixels wide and 250 pixels high.
• This object is set to drawing mode.
• The direction for this object is up (90º).
• The DrawingTool color is set to blue.
• The DrawingTool width is 1.
public DrawingTool(SketchPad win)
postcondition
• A new DrawingTool is created and placed in the center (0, 0) of the SketchPad window win.
• This object is set to drawing mode.
• The direction for this object is up (90º).
• The DrawingTool color is set to blue.
• The DrawingTool width is 1.
Accessor Methods
public String toString();
postcondition
result = color
public Color getColor();
postcondition
result = color
public double getDirection();
postcondition
result = direction
public int getWidth();
postcondition
result = width
Modifier Methods
public void down();
postcondition
• This object is set to drawing mode.
public drawString(String text);
postcondition
• The string text is drawn at the current location using the current color.
public drawCircle (double r);
postcondition
• If the object is in drawing mode, a circle of radius r is drawn around the current location using the current width and color.
public forward(double distance);
postcondition
• This DrawingTool object is moved in the current direction by distance pixels from the old (previous) location.
• If this object is in drawing mode, a line segment is drawn across the distance path just traversed.
• A 0.5 second delay occurs following this method’s execution.
public home();
postcondition
• The location of the DrawingTool object is set to the center of the SketchPad window.
• The drawing direction of the object is up.
public move(double x, double y);
postcondition
• This DrawingTool object is moved from the current position to the position specified by the coordinates x and y.
• If this object is in drawing mode, a line segment is drawn from the old (previous) position to the absolute position specified by x and y.
public setColor(Color c);
precondition
• c is a valid Color
• requires the following at the beginning of your program to set the color to red
import java.awt.Color;
.
.
setColor(Color.red);
postcondition
• The color of the DrawingTool object is set to c.
public setDirection(double d);
postcondition
• Sets the direction to d degrees. The orientation is d degrees counterclockwise from the positive x-axis
public setWidth(int w);
precondition
• w is >= 1
postcondition
• The width of the DrawingTool object is set to w pixels.
public turn(double d);
postcondition
• Changes the current direction counterclockwise by d degrees from the current direction.
public turnLeft(double degrees);
postcondition
• Changes the current direction counterclockwise by d degrees from the current direction.
public turnRight(double degrees);
postcondition
• Changes the current direction clockwise by d degrees from the current direction.
public up();
postcondition
• This object is set to moving mode.
Video soon coming
I know this is way to long please wait for the video i will take it step by step. Video will be released soon today.
Holy crap this brings back memories. I failed java programming a couple of years ago.
oh boy, this sure seems familiar... Java Curriculum for Advanced Placement™ Computer Science
Does the ICT have a paypal site I can donate to, since it is their lesson plans?
**NOTE** if you are indeed the creator of the ICT AP Java Lesson plans, I apologize and will remove this post. I just somehow...doubt it.
double check your bluej link it's headin' to .com,
thanks i'm going to read through this later on
I didn't flunk, but I dropped out of the middle of java courses in college (real life caught up with me XD), but I did have some C++ and BASIC experience (what they teach you in HS), plus my Java classes (on 1.2 back in the day), plus my own hobbyist work on javascript, java applets for webpages and HTML, the last three were all self taught, same as I'm teaching myself now Android programming. I'm looking forward to this course. I could look at that page, but I'll follow the course with the rest of the noobs here [lol]
Fared said:
oh boy, this sure seems familiar... Java Curriculum for Advanced Placement™ Computer Science
Does the ICT have a paypal site I can donate to, since it is their lesson plans?
**NOTE** if you are indeed the creator of the ICT AP Java Lesson plans, I apologize and will remove this post. I just somehow...doubt it.
Click to expand...
Click to collapse
BUSTED!!!
Just my thoughts. I found it most useful to modify and rebuild apps from existing Android code. This is rewarding and instructive in a way a noob tutorial can never match, IMO.
Modifying android code still wont teach you programming. You might be able to do simple things like change the number of home screens or the wallpapers in java, but developing an idea you have might be hard without a basic understanding of programing paradigm.
You might already know how to program, so in that case yeah, jumping straight into new code and figuring out how it works might be easier, but there are those who don't, so they'll benefit from a basic programing course.
Also, I'm sure the op is using the provided link as refference, but for some people a visual approach is better. That link lacks visual aids (video) so the op will make vids and those who need a visual go-over will benefit
OK, point taken. I do have some programming experience, so it may be reasonable to start way earlier for some folks.
Just to throw it out there for anyone that actually wants to learn Java try AppDev. I had the AppDev J2SE and AppDev J2ME but I lost them due to a hard drive failure. I also lost any spare time to actually continue with learning but I did get a basic understanding from the chapters that I completed. Basically its like your in a class room. There is a guy that teaches everything and there are quizzes tests and exercises. If you actually want to learn I would try to find them some where. I would find it pretty hard to try and learn java from a post on a forum, no offense to the OP who is just trying to help.
So you found the kernel and you plagiarize...
Enough has been said.
/end thread
Which version of the JDK is it recommended to get?
So do u guys want me to continue and make videos??? I will make a video teaching how to fix errors and summerize the reading(9 min limit by youtube) if u don't want me to just tell. And so what if I did get from website. I bet a lot of the people here didn't even know the website..........well that is out the way please submit your post if u want me to explane or summarize the text...
mohsinkhan47 said:
So do u guys want me to continue and make videos??? I will make a video teaching how to fix errors and summerize the reading(9 min limit by youtube) if u don't want me to just tell. And so what if I did get from website. I bet a lot of the people here didn't even know the website..........well that is out the way please submit your post if u want me to explane or summarize the text...
Click to expand...
Click to collapse
You can go ahead and stop making videos. Anyone who can't read that isn't in a position to be learning Java.
I don't like being the jerk (some may disagree), but it's just weak that you'd say something was your's then ask for donations for it.
If you want to help people, great. Do it because you want to help people and you feel you have something to give.
mohsinkhan47 said:
And so what if I did get from website. I bet a lot of the people here didn't even know the website..........
Click to expand...
Click to collapse
If you don't see a moral error in stealing someone's work and asking for money from that theft there's something wrong with you.
If I were a mod, I would ban you.
I didn't mean to steal someone else work it just that I wanted to help people because I myself could learn java so when I started to take class it helped me out. I really don't care if u donate or not just want u guys to tell me that u care about me doing all of this. I could have just give u a website and u could have done this all by urself but instead I took my time uploading the gpdraw and the lesson. I just want ur though on what I am doing. Is it right or wrong
Related
Hello and thanks for taking time to look into this project.
I've been currently thinking quite a lot to create an application that could provide A - B route information and draw map a bold line or colour line such as these commercial navigation programs.
Main goal:
user need to input two names, A = Start and B = End destination
Now here i need to know/learn first off how can i get the map i want to use to identify where about is A and secondly draw routing line from A to B.
Well i want to do this in any programming language that's available and would not mind learning it as i have programming background.
IF any of you can help would appreciate it a lot.
Thanks in Advance.
Hello,
I am currently designing a Sudoku application for my own personal development, this is the first proper application I will be making. I can program in Java quite effectively with good object orientated understanding.
I want to create the application with 1 view as shown below:
i.imgur.com/J1XfoTd.jpg
As you can see I would like a single view with a grid object, the grid object will have it's own paint method.
How would I go about making this object zoomable?
How would I handle interaction with this object?
I also have 2 buttons on the bottom left and right,
How would I anchor these so they won't zoom?
Could I float these over the object and have the object as the entire view?
What pop up menu should I use? I would like a small menu with difficulty selection a restart button or a new puzzle button, also an exit button.
Thanks for reading this far, if you do have any advice for me at all then please post, If you require more information about anything then please ask!
I'd like to share CAD Reader to you. It's faster and more powerful than many other CAD viewers which you will like.
Google Play link: https://play.google.com/store/apps/details?id=com.glodon.drawingexplorer
We serve professionals from the AEC and machinery industries who need to measure, add comments, and find text when viewing drawings.
Core Values
Lightweight: It's amazing that such a powerful tool only takes up 12 MB hard disc space.
Simple: It is easy to install and use without cost of learning.
Fast: It‘s the fastest CAD viewer we can use on mobilphones.
Function Overview
1. Comment: You can comment by drawing lines, entering words, and adding records or photographs whereever you want on the drawing.
2. Measure: Specify start and end points to measure length.
3. Add comments to any coordinate as needed on the drawing.
4. Find text: Search the entered word(s) in the drawing.
5. Others: Layer Settings, Layout Switching, Horizontal/Vertical, Zoom All, Full Screen, Hide Comments, Clear Comments.
THANKS
Thanks for your attentions.
Hello and good day!
I would like to use this forum to show you my application for android and i would be very happy to get feedback and critic from you.
This is my first project and there is so much to learn – and different viewpoints are more than needed. English is not my first language so i hope that the following description is not too 'german-sounding'.
The name of my app is: x=1: Learn to solve equations! and you can find it directly at the google play store (i am not yet allowed to post links).
What is it about? (with a twinkle in one's eye)
Solving equations often causes difficulties, either in math class or later in life. At first glance they consist of cryptic characters, which are also subject to strict rules! It gets even worse: Every time we take a step to find the desired X - we have to note down the whole equation again!
But x=1 will save your day! Use it for fun, to learn or to refresh your knowledge - you can now try to find the hard to catch X without any paperwork at all! All you have to do is to connect two parts of the equation step by step - of course only if the mathematical principles allow it. Additionally, you are free to use the equal sign as you like, so you can move things from one side of the equation to the other.
In x=1 you'll be able to solve equations build with the basic arithmetic operations + -, *, /. To spice things up, the rules of bracketing are also included. 40 preset equations gradually teach you the mathematical principles - after that you'll be released into the huge world of equations to puzzle over an infinite number of randomly generated ones!
I am realy happy about your feedback and (honest- this is important) star-ratings in the Play-Store!
With mathematical regards
Daniel Gronau
First of all a big thanks to all who played, testet and contributed to x=1 with invaluable Feedback!
The first update x=1 Version 1.1 is now ready and features the first step of developement to honor your feedback.
What's new?
There are now an unlimited number of randomly generated equations! You can solve them as long as you like.
Improvements:
The calculation with fractions was simplified and you don't have to solve a big equation if you add two fractions with the same denominator or if you multiply it with 1 or 0!
With mathematical regards
Daniel Gronau
Mathematical regards!
Version 1.2 is available and improves the handling of divisions, brackes and signs. But first a big thanks to all who played x=1 and provided invaluable feedback! Thanks to you it can get more refined in every update.
Improvements:
If a bracket is expanded, the single element is now multiplied to the specific side of the participants inside the bracket. For example: (1+2)*5 -> 1*5+2*5 (to the right side) and 5*(1+2) -> 5*1+5*2 (to the left side).
Finally, no calculation will be done when adding 0 to a division.
Also a minus before a division won't be moved inside: 1-(1/2) will not turn to 1+(-1/2) but stay as 1-(1/2)!
Mathematical regards!
Version 1.3 is available and brings a new mathematical operation!
New features:
You can now reduce a division if it is simplified by the operation.
More detailed error messages added! This is only the first step. The next update will get you a detailed explanation of every mathematical operation or error.
It is now possible to use the back-button of your device to discard your last operation.
Improvements:
Some rare errors were addressed, concerning the size of some texts and the disappearance of the interaction arrow.
DOWNLOAD from playstore
Thank you for posting the link! May i ask you if you tried my app? I would love to recieve feedback, this very important!
Daniel
Nice graphics and fonts! I spent so many time trying to find something like this.
Mathematical regards!
Version 1.4 has arrived and I poured my heart and soul into it, enjoy!
Improvements:
- New explanations for every action + an extended tutorial
- New design across the board (also for tablets)
- Improved the generation of the later equations
- Removed the need to sum 0 to it if you add an element to an empty side
- The biggest division-sign is now always in line with the equals-sign
Nice font and visual style! I really like stylization to blackboard.
Thank you very much! Feel free to tell me anything that can be improved!
Mathematical regards!
A small update (version 1.5) that hints strongly to the things to come!
Now you'll be able to scroll your equation around - which is very useful for large equations.
On the topic of large equations - maybe you'll be able to create one yourself in the next update?
Improvements:
- Every equation can now be scrolled around
- Performance improvements, especially for large equations
I'm working on a calculator app for android as a way to learn app development, and am looking for feedback. It's nothing fancy or exciting, but it seemed like a good place to start. The app is meant to accept an unlimited number of terms and correctly follow order of operations. When the user enters a number and hits an operation key, the number and operation are appended to the linked list. Division and multiplication are applied to their respective numbers immediately instead of being stored. When the user presses the '=' key, the app recursively steps through the list and adds/subtracts as needed, then creates a new node at the end containing the total. The whole list is then stored by another list - my intent is to add a history activity that will make previous expressions reusable. I'd greatly appreciate any and all feedback.
app download:
drive.google.com/open?id=1cmlk6zyn_fxlT2LAXdHMHXxcK6XYCqqw
source code:
github.com/jnlentz/SimpleCalc/tree/master/app/src/main/java/com/jesselentz/simplecalc
sample screenshot:
drive.google.com/open?id=11x3Kis9dwIOnlXzJew3miP2oAbeSE7t9