为了账号安全,请及时绑定邮箱和手机立即绑定

我想读取一个文件,并检查一个单词是否存在于文件中。如果单词存在,我的一个方法将返回+1

我想读取一个文件,并检查一个单词是否存在于文件中。如果单词存在,我的一个方法将返回+1

慕容3067478 2022-08-03 15:32:29
这是我的代码。我想读取一个名为“write.txt”的文件,然后一旦它读取。将其与一个单词进行比较,在这里我使用“目标变量(字符串类型)”一旦在名为findTarget的方法内完成比较,它将在条件为真后返回1。我尝试调用该方法,但我不断收到错误。test.java:88: 错误: 找不到符号 字符串测试 = findTarget(target1, source1);^ 符号: 变量 target1 位置: 类测试 1 错误 有人可以纠正我的错误。我对编程很陌生。import java.util.*;import java.io.*;public class test {public static int findTarget( String target, String source ) {int target_len = target.length();int source_len = source.length();int add = 0;for(int i = 0;i < source_len; ++i) // i is an varialbe used to count upto source_len.{int j = 0; // take another variable to count loops            while(add == 0)    {        if( j >= target_len ) // count upto target length        {            break;        }        else if( target.charAt( j ) != source.charAt( i + j ) )         {            break;        }         else         {            ++j;            if( j == target_len )             {                 add++; // this will return 1: true            }        }    }}return add;//System.out.println(""+add);}public static void main ( String ... args ) {//String target = "for";// function 1    try{// read the fileFile file = new File("write.txt"); //establising a file objectBufferedReader br = new BufferedReader(new FileReader(file));   //reading the files from the file object "file"String target1; while ((target1 = br.readLine()) != null) //as long the condition is not null it will keep printing.System.out.println(target1);//target.close();}catch (IOException e)  {     System.out.println("file error!");   }String source1 = "Searching for a string within a string the hard way.";// function 2test ob = new test();String testing = findTarget(target1, source1);// end    //System.out.println(findTarget(target, source));System.out.println("the answer is: "+testing);}}
查看完整描述

2 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

错误是因为是类函数。findTarget


所以,你有这个:


test ob = new test();


String testing = findTarget(target1, source1);

...应更改为从静态上下文调用函数:


//test ob = new test();  not needed, the function is static


int testing = test.findTarget(target1, source1);

// also changed the testing type from String to int, as int IS findTarget's return type.

我没有您的文件内容进行试运行,但这至少应该有助于克服错误。


===== 更新:


你离你很近!


在main中,更改循环中的代码,使其如下所示:


String target1;

int testing = 0;  // move and initialize testing here


while ((target1 = br.readLine()) != null) //as long the condition is not null it will keep printing.

{

    //System.out.println(target1);


    testing += test.findTarget(target1, source1);

    //target1 = br.readLine();

}


System.out.println("answer is: "+testing);


查看完整回答
反对 回复 2022-08-03
?
ibeautiful

TA贡献1993条经验 获得超5个赞

我终于能够解决我的问题。但扩展了功能。我想将加法递增 1。但是在我的编程中,它不断给我输出


答案是:1 答案是:1


相反,我希望我的程序打印的不是两个1,而是1 + 1 = 2


有人可以解决这个递增的问题吗?


import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.IOException;

import java.util.*;



public class test {

    public static int findTarget(String target, String source) {


        int target_len = target.length();

        int source_len = source.length();


        int add = 0;


        // this function checks the character whether it is present.



        for (int i = 0; i < source_len; ++i) // i is a varialbe used to count upto source_len.

        {


            int j = 0; // take another variable to count loops


            while (add == 0) 

            {

                if (j >= target_len) // count upto target length

                {

                    break;

                } 

                else if (target.charAt(j) != source.charAt(i + j)) 

                {

                    break;

                } 

                else 

                {

                    ++j;

                    if (j == target_len) 

                    {


                        add++; // this will return 1: true


                    }

                }

            }


        }


        return add;

        //System.out.println(""+add);


    }


    public static void main(String... args) {


    //String target = "for";

    // function 1

        try {

            // read the file

            Scanner sc = new Scanner(System.in);


            System.out.println("Enter your review: ");

            String source1 = sc.nextLine();


            //String source1 = "Searching for a string within a string the hard way.";

            File file = new File("write.txt"); //establising a file object

            BufferedReader br = new BufferedReader(new FileReader(file)); //reading the files from the file object "file"


            String target1;

            while ((target1 = br.readLine()) != null) //as long the condition is not null it will keep printing.

            {

                //System.out.println(target1);



                int testing = test.findTarget(target1, source1);

                System.out.println("answer is: "+testing);

                //target1 = br.readLine();

            }


            br.close();

        } 

        catch (IOException e) 

        {

            System.out.println("file error!");

        }

    }

}



查看完整回答
反对 回复 2022-08-03
  • 2 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信