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.

Uploaded by

poojadhanrajani
Copyright
© © All Rights Reserved
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% 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.

Uploaded by

poojadhanrajani
Copyright
© © All Rights Reserved
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

if (boyCount == girlCount) {
boyCount++;
boySum += lineScan.nextInt();
} else {
girlCount++;
girlSum += lineScan.nextInt();
}
}

System.out.println(boyCount + " boys, " + girlCount + " girls");
System.out.println("Boys sum = " + boySum);
System.out.println("Girls sum = " + girlSum);
}

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();
}
}

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy