Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Tiedostosta etsiminen

somefckr [09.04.2018 19:37:05]

#

public class Main {

	public static void main(String[] args) {

		File file = new File("abc.txt");
		Scanner in = null;
		int i = 0;

		Scanner scanner = new Scanner(System.in);
		System.out.print("Enter word to search for: ");
		String searchFor = scanner.nextLine();

		try {
			in = new Scanner(file);
			while (in.hasNext()) {
				String line = in.nextLine();
				if (line.contains(searchFor))
					System.out.println(line);

			}
			scanner.close();

		} catch (FileNotFoundException e) {
			System.out.println("Error " + e.getMessage());

		}

	}

}

Koodihan toimii tuollaisenaan, mutta miten tuohon saisi lisättyä ehdon jos ko. sanaa ei löydykkää tiedostosta?

Metabolix [09.04.2018 20:05:01]

#

Pitää laittaa if-lauseessa tulostuksen lisäksi myös merkintä johonkin muuttujaan (esim. boolean found), kun rivi löytyy. Silmukan jälkeen voi tarkastaa siitä, tuliko yhtään osumaa.

somefckr [09.04.2018 20:25:14]

#

Metabolix kirjoitti:

Pitää laittaa if-lauseessa tulostuksen lisäksi myös merkintä johonkin muuttujaan (esim. boolean found), kun rivi löytyy. Silmukan jälkeen voi tarkastaa siitä, tuliko yhtään osumaa.

Tuota jo yritinkin aiemmin tuloksetta, kunnes huomasin, että tuossa while-silmukassa on virhe aaltosulkeen kanssa.
Alla toimiva koodin pätkä.

Ayway, kiitoksia!

public class Main {

	public static void main(String[] args) {

		File file = new File("abc.txt");
		Scanner in = null;
		boolean found = false;

		Scanner scanner = new Scanner(System.in);
		System.out.print("Enter word to search for: ");
		String searchFor = scanner.nextLine();

		try {
			in = new Scanner(file);
			while (in.hasNext()) {
				String line = in.nextLine();
				if (line.contains(searchFor)) {
					System.out.println(line);
					found = true;

				}
			}
			if (!found) {
				System.out.println("Word not found!");
			}

		} catch (FileNotFoundException e) {
			System.out.println("Error " + e.getMessage());

		}
	}

}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta