Как найти максимальный байт в файле java

Обновлено: 07.07.2024

Этот урок на Java для начинающих заключается в написании Java-программы, которая принимает данные от пользователя, находит максимальное и минимальное число и выводит их на консоль.

Также есть другие 4 способа, которые с примерами кода даны ниже.

Мы можем использовать класс Scanner, добавленный в Java 1.5, для чтения пользовательского ввода с консоли. Сканеру нужен InputStream для чтения данных, и поскольку мы читаем с консоли, мы можем передать System.in, который является InputStream для консоли Eclipse, или командную строку в зависимости от того, что используется.

Этот класс также помогает преобразовать пользовательский ввод в требуемый тип данных, например если пользователь вводит числа, необходимо затем преобразовать их в тип данных int и сохранить их в переменной int. Можно использовать метод nextInt(), чтобы считать пользовательский ввод как Integer.

Точно так же можно использовать nextLine() для чтения ввода пользователя как String. Есть другие методы, доступные для чтения с плавающей точкой, двойного или логического значения из командной строки.

Как только получены оба числа, просто нужно использовать оператор отношения меньше и больше, чтобы найти наименьшее и наибольшее число.

После этого можно использовать Math.max(), чтобы узнать максимум двух чисел, он должен совпадать с предыдущим результатом.

В этой статье вы узнаете

Максимум и минимум на примере

Пример программы состоит из двух частей. В первой части мы принимаем данные от пользователя , используем if block и реляционный оператор, чтобы найти максимальное значение в Java, и далее используем метод Math.max() для той же цели.

Во второй части программы мы попросим пользователя ввести еще два числа, а затем мы используем if блок, чтобы вычислить меньшее из двух. После этого мы снова используем функцию Math.min() для вычисления минимального числа. Если наша программа правильная, то оба результата должны быть выведены одинаковыми.

Java программа для нахождения максимума и минимума чисел

Мы можем запустить эту программу из Eclipse IDE, просто скопировав код после создания проекта. Eclipse автоматически создаст исходный файл с тем же именем, что и открытый класс, и поместит его в нужный пакет. Кроме того, также можно запустить эту программу из командной строки, следуя приведенным здесь шагам.

нахождение максимального и минимального значения

Вывод:
введите 2 числа
10
11
Between 10 and 11, maximum number is 11
Maximum value of 10 and 11 using Math.max() is 11
Please enter two numbers to find minimum of two
45
32
Between 45 and 32, Minimum is 32
Maximum value of 45 and 32 using Math.min() is 32

Из массива int

В этом примере мы находим максимальные и минимальные значения элемента из массива int на Java.

Вывод:
Maximum Value is: 120
Minimum Value is: 2

Методы max и min

В пакете java.util.Collections есть методы max и min.

Используя цикл

Вносим в переменные min и max первый элемент из списка, запускаем цикл и сравниваем число на итерации с числом в переменных.

Если оно меньше, чем min, то присваиваем его min, иначе если больше, чем max — то это max.

С помощью Collections.sort взять первый и последний из списка

Средняя оценка / 5. Количество голосов:

Спасибо, помогите другим - напишите комментарий, добавьте информации к статье.

Класс InputStream – это абстрактный класс. Все байтовые потоки чтения наследуются от класса InputStream.

Методы класса InputStream:

Существует 3 основных read() метода:

  • int read()- возвращает целочисленное представление следующего доступного байта в потоке. При достижении конца файла возвращается значение -1.
  • int read(byte[] buffer) - пытается прочесть максимум buffer.length байт из входного потока в массив buffer . Возвращает количество байт, в действительности прочитанных из потока. По достижении конца файла возвращает значение -1.
  • int read(byte[] buffer, int offset, int length) - пытается прочесть максимум length байт, расположив их в массиве buffer , начиная с элемента offset . Возвращает количество реально прочитанных байт. По достижении конца файла возвращает -1.

Методы read() будут блокированы, пока доступные данные не будут прочитаны.

  • int available()- возвращает количество байтов ввода, доступные в данный момент для чтения.
  • close()- закрывает источник ввода. Следующие попытки чтения передадут исключение IOException .
  • long skip(long byteCount) - пропускает byteCount байт ввода, возвращая количество проигнорированных байтов.

Все методы выбрасывают исключение IOException , если происходит ошибка ввода вывода.

2. Класс OutputStream

Все байтовые потоки записи наследуются от абстрактного класса OutputStream.

Методы класса OutputStream:

Существуют 3 основных write() метода:

  • void write(int data) - записывает один байт в выходной поток. Аргумент этого метода имеет тип int , что позволяет вызывать write, передавая ему выражение, при этом не нужно выполнять приведение его типа к byte .
  • void write(byte[] buffer) - записывает в выходной поток весь указанный массив байт.
  • void write(byte[] buffer, int offset, int length)- записывает в поток часть массива - length байт, начиная с элемента buffer[offset] .
  • flush() - очищает любые выходные буферы, завершая операцию вывода.
  • close() - закрывает выходной поток. Последующие попытки записи в этот поток будут возбуждать IOException .

Методы выбрасывают исключение IOException , если происходит ошибка ввода вывода.

3. Класс FileInputStream

Поток FileInputStream используется в Java для чтения данных из файла.

Конструкторы класса FileInputStream:

Представленный конструктор использует имя файла в качестве потока с целью создания объекта входного потока для считывания файла.

Этот конструктор использует объектный файл с целью создания объекта входного потока для чтения файла.

4. Класс FileOutputStream

В Javа FileOutputStream используется для создания файла и последующей записи в него. Поток создаст файл в случае его отсутствия перед его открытием для вывода.

Конструкторы класса FileOutputStream:

Представленный конструктор использует имя файла в качестве строки с целью создания объекта входного потока для записи файла в Java.

Этот конструктор использует объектный файл с целью создания объекта выходного потока для записи файла.

Итак, в основном у меня есть файл C:/test.txt, и вывод, который я получаю(55), неверен, я хочу найти максимальный байт в этом файле, может ли кто-нибудь помочь мне понять, что я делаю не так, или есть ошибка в моем коде?

1 ответ

Как найти найдите анаграммы среди слов, которые даны в файле. Мое решение: Сортируйте их, а затем находите дубликаты. O (n mlgm). n: количество слов, m: максимальный размер слова Есть ли лучшие решения ? спасибо

Имеет ли python эквивалентность java Byte.MAX_VALUE , представляющему максимальный байт? Я посмотрел на модуль python sys , мне удалось найти только sys.maxint . Есть ли в нем что-нибудь вроде sys.maxbyte ? UPDATE: В моем случае я делаю сканирование Hbase Rowkey, мой rowkey выглядит как rk1_rk2.

Здесь вы считываете байт в позиции N, и если он больше вашего текущего максимума, вы заменяете max байтом в позиции N + 1:

Ты видишь, как это не сработает? Вам нужно сохранить результат fileReader.read() , чтобы вы могли сравнить его, а затем использовать его:

Кроме того, согласно этому комментарию:

Вы ожидаете прочитать целые числа из файла, когда на самом деле вы читаете необработанные значения байтов/символов. Если файл является двоичным, вам нужно будет читать целочисленные фрагменты. Если файл является текстовым, вам нужно будет разобрать из него целые числа.

Похожие вопросы:

Не могли бы вы рассказать мне, как android определяет максимальный размер кучи для приложения? Я получаю это: W/dalvikvm( 2306): выделение 58503184 байт превышает максимальный размер кучи 50331648.

У меня есть файл

1.5GB Мне нужно найти в этом файле 3 миллиарда последовательностей байтов. Одна последовательность может быть 4 или 5 байт. Найдите первую позицию или убедитесь, что такой.

Как найти найдите анаграммы среди слов, которые даны в файле. Мое решение: Сортируйте их, а затем находите дубликаты. O (n mlgm). n: количество слов, m: максимальный размер слова Есть ли лучшие.

Имеет ли python эквивалентность java Byte.MAX_VALUE , представляющему максимальный байт? Я посмотрел на модуль python sys , мне удалось найти только sys.maxint . Есть ли в нем что-нибудь вроде.

У меня есть несколько необычная проблема. Из-за дизайна моего предшественника у меня есть файл 27 MB, и мне нужно найти в нем определенный байт, например, 100 000-й байт. Затем я должен удалить все.


Источники и приемники информации так разнообразны, что вряд-ли хватит десяти таких статей, чтобы все их перечислить. Поэтому многолетняя эволюция программистской мысли привела к возникновению понятия поток - stream - универсального программного интерфейса для работы с данными. На текущий момент, практически все языки программирования общего назначения поддерживают эту концепцию. И Java не является исключением.

Источник информации называется входным потоком или потоком ввода - input stream.
При использовании входных потоков информация "входит" в программу из некоего источника, как показано на рисунке ниже.

Поток вывода - это приемник информации, куда мы "выводим" данные из программы:

  1. Работа с байтами идет строго последовательно, один за другим. Нельзя одновременно читать из нескольких позиций потока;
  2. Все операции с потоком - блокирующие. На время операций чтения и записи выполнение вашей программы в текущей нити приостанавливается;
  3. После работы с потоком его нужно обязательно закрыть. Нарушение этого правила может нанести урон как вашей программе, так и операционной системе в целом;
Все потоки делятся на 2 большие группы - байтовые, которые оперируют с байтами, и символьные, которые оперируют символами.

Для работы с входными байтовыми потоками в Java существует класс java.io.InputStream. Он является родительским классом для всех входных байтовых потоков.

Рассмотрим методы класса InputStream:

InputStream - абстрактный класс и мы не можем его использовать для непосредственно создания потока.
Поэтому на практике используется один из его подклассов. Чаще всего используются:

Для работы с выходными потоками существует класс java.io.OutputStream.
Этот класс содержит следующие методы:
Наиболее часто используемые подклассы OutputStream:

Особенности архитектуры библиотеки ввода-вывода В системе ввода-вывода Java активно используется такой шаблон проектирования, как декоратор. То есть, для добавления дополнительной функциональности к уже существующему потоку, этот поток "вкладывается" в другой поток, который реализует требуемую функциональность.
Например, открытие потока для чтения файла выглядит так:
Если вы хотите добавить буферизацию при чтении данных из файла, то поток выше оборачивается в BufferedInputStream:
Допустим, у нас есть текстовый файл на диске - C:/1.txt, в котором хранится текст - "Hello, world". Прочитаем этот файл и распечатаем текст в консоль. Для того, чтобы прочитать данные из файла, нам понадобится входной поток FileInputStream. Всю прочитанную информацию мы должны сохранить в памяти, чтобы потом сконструировать из нее строку. Полученную строку мы распечатаем в консоль и увидим содержимое файла.
Для хранения байтов в памяти нужно использовать ByteArrayOutputStream. При этом помним, что потоки нужно закрывать после использования. Итого, получаем:

Код кажется многословным, но, к счастью, его можно упростить.
Во-первых, все потоки реализуют интерфейс AutoCloseable, что означает, что мы можем воспользоваться конструкцией try-with-resources.
Во-вторых - нет необходимости закрывать поток ByteArrayOutputStream, так как все, что он делает - хранит данные в памяти. Если вы посмотрите исходный код класса ByteArrayOutputStream, то увидите, что метод close() ничего не делает.
В итоге, код будет выглядеть так:

Нужно отметить, что вообще говоря, копирование по одному байту - не самая оптимальная реализация. Создадим буфер в памяти и будем копировать по несколько байтов одновременно. В этом случае, код будет выглядит так:

Читайте также: