使用非扫描仪
  我有一个代码在文本文件中搜索单词,但运行它的扫描器位于该类的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下一篇: How to close a scanner without closing the underlying System.in?
