| AModularConsoleReadingUpperCasePrinter.java |
package lectures.scanning;
import util.annotations.WebDocuments;
import java.util.Scanner;
/**
* Here is another way to do the same problem.
* Why is it more modular than the other approach?
* Can you make this program even more modular?
*
* These questions apply to AModularConsoleReadingUpperCasePrinter.
*
*
*
* (T/F) The main method calls another method in the class.
*
* (T/F) The main method is called by another method in the class.
*
* (T/F) Input of the scanned string and scanning of the string are done in
* different methods.
* (T/F) Scanning of the string and output of token output are done
* different methods.
* (T/F) Input of the scanned string and token output are done in different
* methods.
*
* (T/F) The main method is static, that is, has the static keyword in its header.
*
* (T/F) A static method can call both static and non-static methods.
*
*
*
*
*/
@WebDocuments({"Lectures/Scanning.pptx", "Lectures/Scanning.pdf", "Videos/Scanning.avi"})
public class AModularConsoleReadingUpperCasePrinter {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println ("Please enter a string with uppercase and lower case letters.");
String scannedString = scanner.nextLine();
scanAndPrint(scannedString);
System.out.println ("Program ends.");
}
/**
* What happens if you delete the keyword static in scanAndPrint?
*/
public static void scanAndPrint(String aScannedString) {
int index = 0;
while (index < aScannedString.length()) {
char nextLetter = aScannedString.charAt(index);
if (nextLetter >= 'A' && nextLetter <= 'Z') {
System.out.println("Token:" + nextLetter); // + here means string concatenation
}
index++;
}
System.out.println();
}
}