The document describes 5 static methods for processing text files and strings:
1. The evenNumbers method takes a string of integers and reports statistics like total numbers, sum, even numbers, and percentage of evens.
2. The negativeSum method takes a string of integers and checks if the running sum ever becomes negative, returning true if so.
3. The boyGirl method takes a string of alternating names and integers and reports sums by gender.
4. The textCount method takes a file Scanner and reports lines, characters, and longest line details.
5. The fixSpacing method takes a file, reads and writes lines with multiple spaces between words reduced to single spaces.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100%(2)100% found this document useful (2 votes)
321 views4 pages
Lab 6
The document describes 5 static methods for processing text files and strings:
1. The evenNumbers method takes a string of integers and reports statistics like total numbers, sum, even numbers, and percentage of evens.
2. The negativeSum method takes a string of integers and checks if the running sum ever becomes negative, returning true if so.
3. The boyGirl method takes a string of alternating names and integers and reports sums by gender.
4. The textCount method takes a file Scanner and reports lines, characters, and longest line details.
5. The fixSpacing method takes a file, reads and writes lines with multiple spaces between words reduced to single spaces.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4
1 of 4
Building Java Programs
Chapter 6 Lab Handout Token-Based File Processing 1. Write a static method named evenNumbers that accepts a string of text as a parameter. Assume that the text is a series of integers, and process this text and report various statistics about the integers. Report the total number of numbers, the sum of the numbers, the total count of even numbers and the percent of even numbers. For example, if the string is the following: "5 7 2 8 9 10 12 98 7 14 20 22" Your method should produce the following output. Total numbers = 12 Sum of numbers = 214 Total evens = 8 Percent evens = 66.66666666666667
2. Write a static method named negativeSum that accepts a string of text as a parameter. Assume that the text is a series of integers, and determine whether or not the cumulative sum starting from the first number is ever negative. The method should produce a message indicating whether or not a negative sum is possible and it should return true if a negative sum can be reached and false if it can't be reached. For example, if the string contains the following text, "38 4 19 -27 -15 -3 4 19 38" your method will consider the sum of just one number (38), the sum of the first two numbers (38 + 4), the sum of the first three numbers (38 + 4 + 19), and so on up to the sum of all of the numbers. None of these sums is negative, so the method would produce the following message: no negative sum and would return false. If the text is the following, "14 7 -10 9 -18 -10 17 42 98" the method finds that a negative sum is reached after adding 6 numbers together (14 + 7 + -10 + 9 + -18 + -10) and that the sum is -8. It should report the following: -8 after 6 steps and should return true, indicating that a negative sum can be reached. The method should return the first negative sum it encounters.
3. Write a static method named boyGirl that takes a string of text as a parameter. Assume that the text represents a series of names followed by integers, and that the names alternate between boys' names and girls names. Your method should compute the sum of the boys' integers and the sum of the girls' integers separately and print them. The line could end with either a boy or girl; you may not assume that it contains an even number of names. For example, if the String contains the following text, "JP 3 Helene 7 Jordan 14 Iva 13 Sergey 4 Marianne 9 Kenneth 6" then your method should produce the following output: 4 boys, 3 girls Boys sum = 26 Girls sum = 29 2 of 4 Line-based Processing 4. Write a static method named textCount that takes a Scanner representing a file as a parameter and that reports various statistics about the file. In particular, your method should report the number of lines in the file, the total number of characters (not counting any new-line \n characters) in the file, and the length and text of the longest line. You may assume that the input file has at least one line of input. For example, if the file contains the following text: Twas brillig and the slithy toves did gyre and gimble in the wabe. All mimsey were the borogroves, and the mome raths outgrabe.
"Beware the Jabberwock, my son, the jaws that bite, the claws that catch, Beware the JubJub bird and shun the frumious bandersnatch." The program would find that there are 9 lines (blank lines count), a total of 254 characters in the file (33 on the first line, 32 on the next line, 31 on the next line, 28 on the next, 0 on the next, etc) and that the longest line is the one that begins with "the jaws that bite". The method would produce the following output: Total lines = 9 Total chars = 254 Length of longest line = 41 Longest line = the jaws that bite, the claws that catch, Line-and-Token Processing 5. Write a static method named fixSpacing that accepts a Scanner representing a file as a parameter and writes that file's text to the console, with multiple spaces or tabs reduced to single spaces between words that appear on the same line. For example, if the input file contains the following text, four score and
seven years ago our
fathers brought forth on this continent a new
nation then your method should produce the following output: four score and
seven years ago our
fathers brought forth on this continent a new
nation Notice that some lines might be blank. Each word is to appear on the same line in the output on which it appears in the input file. 3 of 4 Chapter 6 Lab Handout Solutions 1. public static void evenNumbers(String line) { Scanner lineScan = new Scanner(line); int numNums = 0; int numEvens = 0; int sum = 0; while (lineScan.hasNextInt()) { int number = lineScan.nextInt(); numNums++; sum += number; if (number % 2 == 0) { numEvens++; } } System.out.println("Total numbers = " + numNums); System.out.println("Sum of numbers = " + sum); System.out.println("Total evens = " + numEvens); System.out.println("Percent evens = " + 100.0 * numEvens / numNums); }
2. public static boolean negativeSum(String line) { Scanner lineScan = new Scanner(line); int sum = 0; int count = 0; while (lineScan.hasNextInt()) { int next = lineScan.nextInt(); sum += next; count++; if (sum < 0) { System.out.println(sum + " after " + count + " steps"); return true; } }
System.out.println("no negative sum"); return false; // not found } 4 of 4 3. public static void boyGirl(String line) { Scanner lineScan = new Scanner(line); int boyCount = 0; int girlCount = 0; int boySum = 0; int girlSum = 0;
while (lineScan.hasNext()) { String throwAway = lineScan.next(); // throw away name
4. public static void textCount(Scanner input) { int numLines = 0; int numChars = 0; String maxLine = ""; while (input.hasNextLine()) { String next = input.nextLine(); numChars += next.length(); numLines++; if (next.length() > maxLine.length()) { maxLine = next; } } System.out.println("Total lines = " + numLines); System.out.println("Total chars = " + numChars); System.out.println("Length of longest line = " + maxLine.length()); System.out.println("Longest line = " + maxLine); }
5. public static void fixSpacing(Scanner input) { while (input.hasNextLine()) { String text = input.nextLine(); Scanner data = new Scanner(text); if (data.hasNext()) { System.out.print(data.next()); while (data.hasNext()) { System.out.print(" " + data.next()); } } System.out.println(); } }