0

我需要解决以下问题: 编写一个名为 tokenStats 的方法,它接受一个包含一系列标记的 Scanner 作为参数。它应该打印出所有合法整数标记的总和,所有合法实数但不是整数的标记的总和,以及任何类型的标记的总数。例如,如果名为 data 的 Scanner 包含以下标记:

3 3.14 10 鱿鱼 10.x 6.0

然后调用tokenStats(data); 应该打印以下输出:

整数:13

实数:9.14

总代币:6

如果 Scanner 没有令牌,则该方法应打印:

整数:0

实数:0.0

总代币:0

所以,这是我的问题。我试过用

while (input.hasNext()) {

if (input.hasNextInt()) {

这会创建一个无限循环,

但如果我使用

while (input.hasNext()) {

input.next();

if (input.hasNextInt()) {

如果它是一个整数,我会丢失我的第一个令牌......

我应该怎么办?

4

3 回答 3

0

为了确定文件中整数的数量,我建议做这样的事情

将以下变量添加到您的代码中

ArrayList<Integer> list = new ArrayList<Integer>();
int EntryCount = 0;
int IntegerCount =0;

然后在查看文件输入时尝试这样的事情是 s 是扫描仪的一个实例

       while (s.hasNext()) {
                if(s.hasNextInt() == true){
                        int add =s.nextInt();
                        System.out.println(add);
                           list.add(add);
                           IntegerCount++;
                    }
                    EntryCount++;
                }

然后,为了找出所有整数的总和,您将遍历数组列表。

于 2013-12-09T04:40:54.407 回答
0

我建议你检查这种方式..它涵盖了你所有的场景

int totalint =0;
float totalfloat=0 ;
int count=0;
while(input.hasNext()) 
{
    String next = input.next();
    int n; float f;
    try{
        if(next.contains(".")
        {
            f= Float.parseFloat(next);
            totalfloat += f;
        }
        else{
            n= Integer.parseInt(next);
            totalint +=n;
        }            
    }
    catch(Exception e){ /*not int nor a float so nothing*/ }
    count++;
}
于 2013-12-09T04:13:18.270 回答
-1
public static void tokenStats(Scanner input) { 
    int integers = 0;
    double real = 0.0;
    int tokens = 0;
    while (input.hasNext()) {
        if (input.hasNextInt()) {
            integers+= input.nextInt();
        } else if (input.hasNextDouble()) {
            real+= input.nextDouble();
        } else {
            input.next();
        }
        tokens++;
    }
    System.out.println("integers: " + integers);
    System.out.println("real numbers: " + real);
    System.out.println("total tokens: " + tokens);
}
于 2014-12-10T02:47:54.507 回答