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

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

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

慕妹3146593 2022-07-27 21:42:50
这是我的代码。我想读取一个名为“write.txt”的文件,然后读取一次。将它与一个单词进行比较,这里我使用“目标变量(字符串类型),一旦在名为findTarget的方法中完成比较,它将在条件为真后返回1。我尝试调用该方法,但我一直收到错误消息。test.java:88: error: cannot find symbol String testing = findTarget(target1, source1); ^ symbol: variable target1 location: class test 1 error 谁能 纠正我的错误。我对编程很陌生。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 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超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-07-27
?
冉冉说

TA贡献1877条经验 获得超1个赞

我终于能够解决我的问题。但扩展功能。我想将 add 增加 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-07-27
  • 2 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号