Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 搜索字符串并从文件打印一行_Java_Search_Printing_Line - Fatal编程技术网

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");
}