#java #string #file #text #compare
#java #строка #файл #текст #Сравнить
Вопрос:
могу ли я получить рекомендацию или подобный совет относительно того, что следует использовать или быть известным для выполнения этой задачи (я думаю, самым элементарным способом). если кто-то захочет написать код, который был бы фантастическим, но расплывчатых ответов о необходимых знаниях или технике будет достаточно.
Я хотел бы программу, в которой в начале вы вводите символы, либо разделенные нажатием клавиши enter, либо строку, которую можно было бы разделить на отдельные элементы массива (я полагаю) — символы, разделенные запятой, — и которая затем сравнивалась бы с txt-файлом, который содержит серию записей, и печатались бы только те, которые содержат некоторые из (что означает более короткие), или все символы, которые были предоставлены в начале, возможно, даже печать была бы разделена длиной записи (word).
Есть идеи о том, как это сделать? Кроме того, могут ли результаты быть напечатаны где-то еще, кроме командной строки, например, в другом txt-файле? Нужно сделать это на java. Спасибо.
Комментарии:
1. Да, программируя его на Java. SO — это не форум для советов.
2. хорошо, так это неправильный раздел форума или неправильный сайт для такого рода вопросов в целом? если это так, знаете ли вы какой-нибудь хороший источник информации (или форумы с советами) для этого, я понятия не имею, как читать txt-файл, например, и хорошо, я попытаюсь разобраться с остальным, даже если это будет все неуклюже.
3. Начните с docs.oracle.com/javase/tutorial/essential/io .
Ответ №1:
Взгляните на следующий пример:
public class SimpleExample {
public static void main(String[] args) throws ClassNotFoundException {
Scanner inputNumbers = new Scanner(System.in);
List<Integer> listOfNumbersToStore = new ArrayList<>();
List<Integer> listOfNumbersToCheck = new ArrayList<>();
int number;
String answer;
boolean flag = true;
// do code within a loop while flag is true
do {
// print message to screen
System.out.print("Would you like to put new number to your file list (Y/N): ");
// get answer (Y/N) to continue
answer = inputNumbers.next();
// if answer is Y or y
if ("Y".equalsIgnoreCase(answer)) {
// print message
System.out.print("Put your number: ");
// get input integer and assign it to number
number = inputNumbers.nextInt();
// add that number to a list of numbers to store to file
listOfNumbersToStore.add(number);
} else if ("N".equalsIgnoreCase(answer)) {
flag = false;
}
} while (flag);
writeToFile(listOfNumbersToStore);
System.out.println("---------- Check numbers ----------");
flag = true; // set it again to true
//do code within a loop while flag is true
do {
System.out.print("Would you like to put new number to your check list (Y/N) : ");
answer = inputNumbers.next();
if ("Y".equalsIgnoreCase(answer)) {
System.out.print("Put your number: ");
number = inputNumbers.nextInt();
listOfNumbersToCheck.add(number);
} else if ("N".equalsIgnoreCase(answer)) {
flag = false;
}
} while (flag);
// get a list from a file
List<Integer> readFromFile = readFromFile();
// check if there are any common elements within compared lists
boolean areThereAnyCommonElements = !Collections.disjoint(
listOfNumbersToCheck, readFromFile);
//create a new treeset used for containing unique elements and ordering it naturally, from 0 to n
Set<Integer> set = new TreeSet<>(listOfNumbersToCheck);
set.retainAll(readFromFile);
// print these messages
System.out.println("Are there any common integers between a list from a file and checking list? " areThereAnyCommonElements);
System.out.println("Those integers are: " set.toString());
}
/**
* List implements Seriazable interface, therefore store it to a file
* serialized
*
* @param numberOfIntegers
*/
public static void writeToFile(List<Integer> numberOfIntegers) {
try {
// create a file output stream to write to the file with the specified name.
FileOutputStream fileOutputStream = new FileOutputStream("tekstDataOutputStream");
// writes the serialization stream header to the underlying file stream;
ObjectOutputStream dataOutputStream = new ObjectOutputStream(new BufferedOutputStream(fileOutputStream));
// write a list to object output stream
dataOutputStream.writeObject(numberOfIntegers);
//close them
dataOutputStream.close();
fileOutputStream.close();
} catch (IOException ioE) {
System.err.println("JVM reported an error! Take a look: " ioE);
}
}
public static List<Integer> readFromFile() throws ClassNotFoundException {
//create an empty list of integers
List<Integer> result = new ArrayList<>();
try {
//opening a connection to an actual file
FileInputStream fis = new FileInputStream("tekstDataOutputStream");
//used for reading from a specified input stream
ObjectInputStream reader = new ObjectInputStream(fis);
//get that list
result = (List<Integer>) reader.readObject();
//close streams
reader.close();
fis.close();
} catch (IOException ioE) {
System.err.println("JVM reported an error! Take a look: " ioE);
}
return resu<
}
}
Комментарии:
1. Спасибо. Я буду изучать это, пока я не знаю и половины того, что здесь есть.