Write a static method named negativeSum() that accepts a string of text as a par
ID: 3732458 • Letter: W
Question
Write a static method named negativeSum() that accepts a string of text as a parameter from the standard console input stream. 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
Explanation / Answer
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Test {
public static void main(String arggs[]) {
Test test = new Test();
String strFileName = "number.txt";
boolean flag = test.negativeSum(strFileName);
}
public boolean negativeSum(String strFileName) {
String[] strLines = new String[10];
int lineNumber = 0;
Scanner scanner;
boolean flag = false;
try {
scanner = new Scanner(new File(strFileName));
while (scanner.hasNextLine()) {
strLines[lineNumber] = scanner.nextLine();
++lineNumber;
}
String temp = strLines[0];
StringTokenizer st = new StringTokenizer(temp);
int sum = 0;
int[] res = new int[20];
int count = 0;
while (st.hasMoreTokens()) {
sum = sum + Integer.parseInt(st.nextToken());
res[count] = sum;
count++;
}
for (int i = 0; i <= count; i++) {
if (res[i] < 0) {
flag = true;
System.out.println("negative sum can be reached:" + res[i]
+ " after " + (i + 1) + " steps ");
}
}
if (flag == false) {
System.out.println("None of these sums is negative");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return flag;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.