website/content/ta/spring2018/cpsc220/jan25.md

138 lines
2.7 KiB
Markdown
Raw Permalink Normal View History

2020-01-15 21:51:49 -05:00
# Lecture for January 25
## Strings
These are concatenated chars
```java
'd' + 'o' + 'g' // equivalent to "dog"
```
```java
"straw" + "berry" // strawberry
```
Strings are denoted by double quotes `""` rather than a string which is denoted by single quotes `''`
String is not a primitive type, it is a class. Hence, why it is capitalized in Java.
The `java.lang.String` is automatically imported in Java.
To declare and initialize a String
```java
String name = "Henry";
```
In memory it appears as
| H | 'e' | 'n' | 'r' | 'y' |
| ---- | ---- | ---- | ---- | ---- |
| | | | | |
### String Methods
```java
int length()
```
```java
boolean equals(String another)
```
```java
boolean startsWith(String prefix)
```
```java
boolean endsWith(String suffix)
```
```java
String substring(int start, int end)
```
```java
int indexOf(int ch)
```
```java
String toLowerCase()
```
### Using String Methods
```java
char first = name.charAt(0);
```
Remember in Java, that it starts counting from zero! If you try to access a letter that doesn't exist, it will produce an `IndexOutOfBounds` error.
## Errors
There are two types of errors, compile-type errors and run-time errors. Later we will talk about debugging skills such as making "breakpoints" in your code so you can analyze the different variable values.
### Compile Time Errors
Compile time errors are generated due to syntax errors. Forgot a semicolon? Missing a brace?
### Run-time Errors
These are logic errors. Not derived from syntax errors. An example of one that was discussed earlier is the `IndexOutOfBounds` error.
## Tricky Thing About Input
Let's talk about input right now. Let's say you have the following scenario
```java
Scanner input = new Scanner(System.in);
System.out.println("Enter pet's age: ");
int age = input.nextInt();
System.out.println("Enter pet's name: ");
String name = input.nextLine();
System.out.println("Enter pet's breed: ");
String breed = input.next();
```
Then when we start to run the program...
```reStructuredText
Enter pet's age:
14
Enter pet's name:
Enter pet's breed:
Labradoodle
```
Why did it skip pet's name? Let's run through the process again
```reStructuredText
Enter pet's age:
14 [ENTER]
Enter pet's name:
Enter pet's breed:
Labradoodle
```
Here the [ENTER] key gets saved into name.
To resolve this, just use an `input.nextLine()` to throw away that [ENTER]
```java
Scanner input = new Scanner(System.in);
System.out.println("Enter pet's age: ");
int age = input.nextInt();
System.out.println("Enter pet's name: ");
input.nextLine();
String name = input.nextLine();
System.out.println("Enter pet's breed: ");
String breed = input.next();
```