0

我试图能够在我的程序中创建一个方法,使我能够搜索一个字符串,然后打印该字符串位于文本文件内的整行。任何指针?我试图这样做,但我一直没有得到任何东西-.-

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

这是我尝试制作该方法的地方:

 void fugleType () {
System.out.println("Her kan du finne registrerte observasjoner med søk på typen fugl.");
try{
    Scanner output = new Scanner("fugler.txt");


System.out.println("Vennligst spesifiser fugletype: ");

int linjenummer = 0;

while (output.hasNext()){
    String fugletype = output.next();
    linjenummer++;
    if(fugletype.indexOf("fugler.txt")){
    System.out.println (linjenummer);
    }
}
}catch (Exception e) {
    System.out.println("Fant ikke filen");
}
}

} `

4

2 回答 2

0

if(fugletype.indexOf("fugler.txt"))不是有效的陈述。像这样写 if(fugletype.indexOf("fugler.txt")!= -1)

于 2013-09-25T11:53:28.383 回答
0
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");
}

如果你想找到一个包含空格的字符串(例如“这是一个字符串”),我建议使用 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");
}
于 2013-09-25T12:01:10.987 回答