Java 搜索字符串并从文件打印一行
我正在尝试在我的程序中创建一个方法,使我能够搜索字符串,然后在文本文件中打印该字符串所在的整行。有什么建议吗?我试过这么做,但我一直一无所获Java 搜索字符串并从文件打印一行,java,search,printing,line,Java,Search,Printing,Line,我正在尝试在我的程序中创建一个方法,使我能够搜索字符串,然后在文本文件中打印该字符串所在的整行。有什么建议吗?我试过这么做,但我一直一无所获 import java.util.*; import java.io.*; public class Oblig2 { public static void main (String[] args) { final Scanner input = new Scanner (System.in); int menyvalg=0; Meny menye
import java.util.*;
import java.io.*;
public class Oblig2 {
public static void main (String[] args) {
final Scanner input = new Scanner (System.in);
int menyvalg=0;
Meny menyen = new Meny();
menyen.meny();
}
}
//Selve menyen til programmet i en egen klasse.
class Meny {
PrintWriter fil;
Scanner input = new Scanner (System.in);
public void meny() {
try{
fil=new PrintWriter(new FileWriter("fugler.txt", true));
} catch (IOException e) {
System.out.println("Filen finnes ikke");
}
int menyvalg=0;
int menykall=1;
//Menyen vil her bli repetert helt til en taster inn 4 og endrer menykall til 0.
do{
//Selve menyen vil bli repetert helt til brukeren velger en av menyens alternativer.
do{
System.out.println("====== Meny for registrering av fugleobservasjoner =====");
System.out.println("\n1. Registrer en fugleobservasjon");
System.out.println("2. Skriv ut alle fugleobservasjoner av en type");
System.out.println("3. Skriv ut alle fugleobservasjoner på ett bestemt sted");
System.out.println("4. Avslutt systemet");
System.out.println("\nVennligst velg en aksjon: ");
menyvalg = input.nextInt();
} while(menyvalg < 1 || menyvalg > 4);
switch (menyvalg){
case 1: registrering();
break;
case 2: //fugleType();
break;
case 3:
break;
case 4:menykall=0;
}
}while(menykall>=1);
}
void registrering () {
System.out.println("Velkommen til registreringen av fugleobservasjoner.");
System.out.println("Begynner registreringen (Lagrer seg i filen fugler.txt): ");
try {
fil = new PrintWriter(new FileWriter("fugler.txt", true));
System.out.println("\nVennligst tast inn fugletypen: ");
String fugletype = input.next();
fil.write(fugletype + ",");
System.out.println("Tast inn fuglens kjonn (M/H/X): ");
char fuglekjonn = input.next().charAt(0);
fil.write(fuglekjonn + ",");
System.out.println("Tast inn observasjonslokasjon: ");
String lokasjon = input.next();
fil.write(lokasjon + ",");
System.out.println("Tast inn dato for observasjon (Som en string på formen mai2012): ");
String dato = input.next();
fil.write(dato);
fil.close();
}catch(Exception e){
System.out.println("Åpning av fil feilet");
}
}
}
`如果(fugletype.indexOf(“fugler.txt”)
是无效语句。像if(fugletype.indexOf(“fugler.txt”)!=-1)那样编写
如果要查找包含空格的字符串(例如“This is a string”),建议使用contains方法:
try{
Scanner fr = new Scanner(new FileReader("fugler.txt"));
System.out.println("Vennligst spesifiser fugletype: ");
int linjenummer = 0;
while (fr.hasNextLine()){
String fugletype = fr.nextLine();
linjenummer++;
if(fugleType.contains(stringUwant){
System.out.println (fugletype); //entire line
}
}
}catch (Exception e) {
System.out.println("Fant ikke filen");
}
我发现我写的if语句是错误的,它应该是我的文件名而不是“fugletype”,扫描仪输入而不是“fugler.txt”。但是,我得到一个错误,它是不兼容的。indexOf是否仅用于字符串,如果使用文件名,则无法运行?顺便问一下,我编写的sysprintline是否会打印整行?很抱歉,我在使用FileReader时犯了一个错误,现在已更正,是的,println将打印整行。谢谢。几个问题:为了能够选择它将在括号中搜索哪个字符串(stringUwant),当input是来自终端的扫描仪的in值的变量时,我可以使用(input)吗?我在if(fugletype.contains)所在的行中得到一个错误,它说:Oblig2.java:97:error:method contains in class String不能应用于给定的类型;if(fugletype.contains(输入)){^required:CharSequence found:Scanner原因:实际参数Scanner无法通过方法调用转换转换为CharSequence Kay,我忘记了部分代码。但是为什么在第一个while循环中使用第二个while循环?当我编译和运行程序时,不允许我输入任何内容搜索。我的第二个示例不使用第二个while循环,我编写的代码不接受任何输入,因为您的问题与用户输入无关,因此我没有编写任何接受用户输入的内容,如果您需要的话pedromss91@gmail.com我不介意帮忙。
try{
Scanner fr = new Scanner(new FileReader("fugler.txt"));
System.out.println("Vennligst spesifiser fugletype: ");
int linjenummer = 0;
while (fr.hasNextLine()){
String fugletype = fr.nextLine();
linjenummer++;
Scanner s = new Scanner(fugletype);
while(s.hasNext()){ // Splits at " "
String myString = s.next();
if(myString.equals(stringUWant){
System.out.println (fugletype); //entire line
}
}
}
}catch (Exception e) {
System.out.println("Fant ikke filen");
}
try{
Scanner fr = new Scanner(new FileReader("fugler.txt"));
System.out.println("Vennligst spesifiser fugletype: ");
int linjenummer = 0;
while (fr.hasNextLine()){
String fugletype = fr.nextLine();
linjenummer++;
if(fugleType.contains(stringUwant){
System.out.println (fugletype); //entire line
}
}
}catch (Exception e) {
System.out.println("Fant ikke filen");
}