在Java中将计数器重置为零? [英] Reset Counter to Zero in Java?

查看:59
本文介绍了在Java中将计数器重置为零?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下代码:

for(int sentenceCounter = 0; sentenceCounter < sentences.length; sentenceCounter++)
{
    double score = 0;
    String[] sentence = sentences[sentenceCounter].split(" ");

    for (int titleCounter = 0; titleCounter < titles.length; titleCounter++)
    {

        for (int wordCounter = 0; wordCounter < sentence.length; wordCounter++)
        {
            if (titles[titleCounter].equals(sentence[wordCounter]))
            {
                if(titleCounter == 0)
                {

                    score += titleValue * hundred / 100;
                    sentenceScore.put(sentenceCounter, score);
                    System.out.println(sentenceCounter + " " + wordCounter + " " + score);

                }else
                {

                    score +=  titleValue - titleSubtract * hundred / 100;
                    sentenceScore.put(sentenceCounter, score);
                    System.out.println(sentenceCounter + " " + wordCounter + " " + sentenceScore.get(0));
                }

                System.out.println(sentenceCounter);

            }

        }
    }
}

我正在尝试在句子计数器增加之后重置分数计数器,但是当我在句子计数器的for循环后的右边将分数设置为0时,它不会自行重置.那么,如何重置它?

I am trying to reset the score counter after the sentenceCounter increases, however when I set score = 0 at the right after the for loop of sentenceCounter it does not reset itself. So, how do I reset it?

该程序的步骤如下:1.将标题分成单个单词.2.将句子分解成单个单词.3.查看句子中是否包含标题中的单词.如果是,则将句子的分数提高X.4.重复标题中的下一个单词.5.如果句子中标题中包含另一个词,请添加到上一个分数.6.对下一个句子重复此操作,但首先将分数计数器设置为零.这就是我被困住的地方.

The steps of the program is as follows: 1. Break title into single words. 2. Break sentence into single words. 3. See if sentence contains word from title. If yes then increase score of sentence by X. 4. Repeat for next word in title. 5. If sentence contains another word from title add to previous score. 6. Repeat this for next sentence but first set score counter to zero. This is where I am stuck.

这是我从上面的代码中观察到的输出:

This is the output I am observing from above code:

0 0 10.0
0
0 1 19.3
0
1 5 19.3
1

如您所见,第二句从19.3开始而不是从零开始.

As you can see sentence two starts at 19.3 instead of starting at zero.

这里是完整的程序:

import java.util.HashMap;

导入java.util.Map;

import java.util.Map;

公共类MainDemo {

public class MainDemo {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    String fullTitle = "Facebook traffic website";
    String[] titles = fullTitle.split(" ");
    Double titleValue = 10.0;
    Double sentenceSubtract = 13.0;
    Double titleSubtract = 0.70;
    Double hundred = 100.0;
    HashMap<Integer, String> titleArray = new HashMap<Integer, String>();
     for(int i =0; i < titles.length; i++)
     {
         String t = titles[i];
         titleArray.put(i, t);
     }
    String article = "Facebook traffic is growing fast. It is the second largest website. ";

    HashMap<Integer, Double> sentenceScore = new HashMap<Integer, Double>();


    String[] sentences = article.split("\\. ");
    String[] str;



    for(int sentenceCounter = 0; sentenceCounter < sentences.length; sentenceCounter++)
    {
        double score = 0;
        String[] sentence = sentences[sentenceCounter].split(" ");

        for (int titleCounter = 0; titleCounter < titles.length; titleCounter++)
        {



            for (int wordCounter = 0; wordCounter < sentence.length; wordCounter++)
            {
                if (titles[titleCounter].equals(sentence[wordCounter]))
                {
                    if(titleCounter == 0)
                    {

                        score += titleValue * hundred / 100;
                        sentenceScore.put(sentenceCounter, score);
                        System.out.println(sentenceCounter + " " + wordCounter + " " + score);

                    }else
                    {

                        score +=  titleValue - titleSubtract * hundred / 100;
                        sentenceScore.put(sentenceCounter, score);
                        System.out.println(sentenceCounter + " " + wordCounter + " " + sentenceScore.get(0));
                    }

                    System.out.println(sentenceCounter);

                }

            }
        }
    }





        }















}

推荐答案

每次迭代都会重置您的得分计数器.问题是,如果titleCounter!= 0,则您将打印一组不同的值.您期望打印分数的控制台打印实际上定义为打印 sentenceScore.get(0).

Your score counter is being reset every iteration. The problem is that you are printing a different set of values if titleCounter != 0. The print to console that you are expecting to print score, is actually defined to print sentenceScore.get(0).

这是正确的.statementScore.get(0)是重置为0之前最后一次迭代的得分值.

This is correct. sentenceScore.get(0) would be the score value from last iteration before it was reset to 0.

这篇关于在Java中将计数器重置为零?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆