使用非扫描仪
我有一个代码在文本文件中搜索单词,但运行它的扫描器位于该类的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?