以下是我要遵循的说明:
编写一个名为负和的方法,接受扫描仪读数 从包含一系列整数的文件输入,以及打印 消息到控制台指示是否从总和开始 第一个数字是负数。如果a,你应该返回true 可以达到负数,如果不是,则为假。例如,假设 文件包含38 4 19 -27 -15 -3 4 19 38您的方法 考虑正数(38)的总和,前两个数字(38 + 4)第一个三号(38 + 4 + 19)等等。没有 这些方法会产生以下结果 输出并返回false:没有负数。
如果该文件包含14 7 -10 9 -18 -10 17 42 98方法 发现在添加前六个后达到-8的负和 数字。它应该将以下内容输出到控制台并返回 true:经过6个步骤后总和为-8。
这是我到目前为止所拥有的。我只是在添加扫描仪以提示用户输入数字时遇到问题。
import java.io.*;
import java.util.*;
public class NegativeSum{
public static void main (String [] args )
throws FileNotFoundException{
negativesum();
}//end of amin
public static boolean negativesum()
throws FileNotFoundException{
File file = new File ("negativeSum.txt");
Scanner input = new Scanner (file);
int sum=0;
int count = 0;
while ( input.hasNextInt()){
int next =input.nextInt();
sum+=next;
count++;
if ( sum<0){
System.out.println("sum of " + sum + " after " + count + "steps" );
return true;
}
}///end of while
System.out.println("no negative sum ");
return false;
}//end of metho d
}//end of main
答案 0 :(得分:1)
我在您的实现中遇到的唯一严重错误(与您的问题陈述相比)是您的方法应该收到Scanner
作为输入(例如接受扫描程序) -
public static boolean negativeSum(Scanner input) {
if (input == null) {
// Handle null - e.g. no value
return false;
}
int sum = 0;
int count = 0;
while (input.hasNextInt()) {
int next = input.nextInt();
sum += next;
count++;
if (sum < 0) {
System.out.println("sum of " + sum + " after "
+ count + " steps");
return true;
}
}// /end of while
System.out.println("no negative sum");
return false;
}
答案 1 :(得分:0)
我的问题描述中没有看到任何要求您提示用户输入数字的内容。您的代码似乎已满足分配的规定要求。
如果你确实想这样做,那么:
System.in
是代表标准输入的InputStream
。Scanner(InputStream)
构造函数创建一个从指定的Scanner
读取的InputStream
。我会把它作为练习留给你弄清楚如何把两者放在一起。 :)