2016-11-07 2 views
0
import javax.swing.JOptionPane; 
import java.util.Scanner; 
import java.io.FileReader; 
import java.util.Arrays; 


public class Part2{ 
    public static void main(String[] args){ 
     String[] holdPosition = new String[30]; 
     String FileToBeSearched = JOptionPane.showInputDialog("Enter the file name to be searched: "); 
     String WordToBeSearched = JOptionPane.showInputDialog("Enter the word to be searched: "); 
    try{ 
     FileReader searchedFile = new FileReader(FileToBeSearched); 
     Scanner scannedFile = new Scanner(searchedFile); 
     int i = 0; 
     String NumOfLines = ""; 

      while(scannedFile.hasNext()){ 
        String currentWord = scannedFile.next(); 
        holdPosition[i] = currentWord; 

        if(currentWord.equalsIgnoreCase(WordToBeSearched)){ 
         NumOfLines += holdPosition[i-1]+" "+currentWord+" "+scannedFile.next()+"\n"; 
          Arrays.fill(holdPosition, null); 
          } 
           i++; 
            } 
       scannedFile.close(); 
        JOptionPane.showMessageDialog(null,NumOfLines); 
       }catch(Exception except){} 

    System.exit(0); 
       } 
} 

Это мой текущий код. Я не могу понять, как проверить, соответствует ли данная строка числу или нет, мне нужен блок try, в котором я передаю каждую строку в файле Double.parseDouble(). Я хочу вернуть каждое число в текстовом файле, а также строку до и после нее.Найти номера из строки, из текстового файла в Java

+1

Итак, в чем проблема? Вы должны получить то, что хотите. – Nabin

+0

Мне нужно найти, есть ли дубликаты в текстовом файле. Мой текстовый файл выглядит следующим образом: «Предположим, мы нарезаем торт, чтобы разделить его на 5 человек. Я разрезал себе большой кусочек, состоящий из 33,3 процента всего торта. Теперь настала ваша очередь разрезать кусочек торта. вы также разрезаете кусочек на 33,3%? Или вы будете быть более справедливым и разделить оставшиеся 66,6 процента торта на 4 четные части? Сколько вы кусочек отрезаете? Затем мне нужно напечатать слово перед каждым номером, а затем слово после каждого номера. – Johnboy

+0

Я сомневаюсь, правильно ли понял ваш вопрос. Кажется, вы дали ответ. Смотрите также здесь: http://stackoverflow.com/a/5769679/1828296 – lospejos

ответ

1

Я не уверен, если я получу свой вопрос, но это может быть, что вам нужно всего лишь немного вспомогательный метод, такие как:

public static boolean isDouble(String word) { 
    boolean isDouble = false; 
    try { 
    Double.parseDouble(word); 
    isDouble = true; 
    } catch (NumberFormatException nfe) { 
    // empty on purpose, as most of the time, input will not be a number! 
    } 
    return isDouble; 
} 

Теперь вы можете просто использовать этот метод, чтобы проверить каждую строку ввода, вы получите от вашего сканера. Если метод возвращает true, вы знаете, у вас есть номер.

Если ваш код должен также знать , что номер вы можете немного переработать это:

public static Double isDouble(String word) { 
    Double isDouble = null; 

... используя нуль как указание к абоненту, что ваш вход не является числом. Но возвращение null - это не настоящая практика бога.

Подсказка: мой код только что записан, чтобы вы пошли; остерегайтесь опечаток или тонких других ошибок. Он предназначен для того, чтобы вы сами решили решить свою проблему.