使用非扫描仪

我有一个代码在文本文件中搜索单词,但运行它的扫描器位于该类的public static void main(String [] args)中。 我需要能够将扫描器移动到一个字符串中,这样,我就可以通过引用另一个类的主要方法中的字符串来找到它,而不是在代码中手动输入要在代码中搜索的单词,用一个构造函数接受文字。 但是,当我尝试将扫描器移出主体并进入新的公共字符串时,我必须更改System.out.println(arr [0])以返回arr [0],并且程序将不会运行,除非我将字符串类型更改为静态。 当我这样做的时候,控制台里什么也没有出现,与在main中运行时显示正确的输出相反。
这里是我的代码:import java.io.FileInputStream; import java.util.ArrayList; import java.util.List; import java.util.Scanner;

public class Database {
    public String arr45;
    public String hi(String firstName, String lastName){
Scanner theScanner = null;




    try{    
     theScanner = new Scanner(new FileInputStream("Cast.txt"));}

    catch(Exception ex){
        ex.printStackTrace();
    }

    while( theScanner.hasNext()){
    String movie = theScanner.nextLine();
    String[] arr = movie.split("/");

    if(movie.contains(lastName + ", " + firstName))
    {

        theScanner.close();
        String arr45 = arr[0];  


    }

    }
    return arr45;
    }
    public static void main( String[] args ){


}
    }

此代码适用于当字符串内的所有内容都处于主要状态时

if(movie.contains(lastName + ", " + firstName))

具有我正在用括号中的引号搜索的实际名称,并且返回替换为

System.out.println.  

我尝试了很多东西,但我似乎无法弄清楚如何将原始代码转换为一个字符串,它接受两个变量并执行相同的操作。 以下是正确运行的原始代码:

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Database {
    public static String arr2 = "";

    public static void main( String[] args ){
    Scanner theScanner = null;




    try{    
     theScanner = new Scanner(new FileInputStream("Cast.txt"));}

    catch(Exception ex){
        ex.printStackTrace();
    }

    while( theScanner.hasNext()){
    String movie = theScanner.nextLine();
    String[] arr = movie.split("/");

    if(movie.contains("Hanks, Tom"))
    {

    System.out.println(arr[0]); 
    }
    }

    theScanner.close();
    }

}

最后一件事 - 当然。 大概。 我被要求制定一种方法,搜索所有名称中包含某个词的演员,并使其工作,但它仅运行一行文本。 请告诉我怎样才能让它进入下一行,并在行结束时重新执行:

        while( theScanner6.hasNextLine()){
        String movie = theScanner6.nextLine();
        String[] arr = movie.split("/");

            for(int i = 1; i< 400; i++){

                    if(arr[i].contains(wordD)){
                        int placeholder = i;
                        String[] firstW = arr[placeholder].split(","); 
                         movie = theScanner6.nextLine();

                        System.out.println(firstW[1] + " " + firstW[0]);
                        arr45 = arr[placeholder];   

                    }

            }


        }
        while( !theScanner6.hasNextLine()){
            theScanner6.close();
        }

        return arr45;
        }

如果我理解你的问题,首先实例化你的Database然后调用该方法,

public static void main( String[] args ){
    Database db = new Database();
    db.hi("first", "last");
}

也,

String arr45 = arr[0];  

应该

arr45 = arr[0];  

或者你影射先前定义的字段(然后阴影超出范围)。

链接地址: http://www.djcxy.com/p/96113.html

上一篇: Using a scanner in a non

下一篇: How to close a scanner without closing the underlying System.in?