Дана задача на нахождение наибольшего числа. Есть файл chisla.txt, содержащий числа 3, 8, 1, 5 в столбик. Необходимо в коде этот файл прочитать и найти наибольшее число.
Я знаю как вывести эти числа на экран и как прописав массив найти в нем наибольшее.
Но как соединить эти две задачи? Как прописать в коде этот "переход" с одной задачи на другую?
import java.io.*;
import java.util.*;
public class X
{
public static void main(String[] args)
{
BufferedReader in = new BufferedReader(new FileReader("\\chisla.txt"));
//как их связать?
int[] array = {...};
int max = 0;
for (int i = 0; i < array.length; i++)
{
if (max < array[i])
max = array[i];
}
System.out.println("Max: " + max);
}
}
Раз всё же начали давать ответы, то с использованием Java 8 можно поступить так:
public static void main(String[] args)
{
int[] array = null;
try (BufferedReader in = new BufferedReader(new FileReader("chisla.txt")))
{
array = in.lines().mapToInt(Integer::parseInt).toArray();
}
catch (IOException | NumberFormatException e)
{
e.printStackTrace();
}
if (array != null)
{
int max = Integer.MIN_VALUE;
for (int i = 0; i < array.length; i++)
{
if (max < array[i])
{
max = array[i];
}
}
System.out.println("Max: " + max);
}
}
Все строки из файла, а точнее поток строк Stream<String>, возвращаемый in.lines(), привести к потоку int-чисел (IntStream, возвращаемый mapToInt) с помощью Integer.parseInt, после чего этот поток преобразовать в массив int[] с помощью toArray().
Также нужно не забывать закрывать BufferedReader после чтения данных. В представленном коде это делается с помощью конструкции try-with-resources.
А вообще, максимум можно находить и с помощью самого IntStream:
public static void main(String[] args)
{
try (BufferedReader in = new BufferedReader(new FileReader("chisla.txt")))
{
OptionalInt optionalMax = in.lines().mapToInt(Integer::parseInt).max();
if (optionalMax.isPresent())
{
System.out.println("Max: " + optionalMax.getAsInt());
}
}
catch (IOException | NumberFormatException e)
{
e.printStackTrace();
}
}
Вы можете использовать сканер
Scanner scanner = new Scanner(new File("tall.txt"));
int [] array= new int [100];
int i = 0;
while(scanner.hasNextInt()){
array[i++] = scanner.nextInt();
}
и Ваш метод
BufferedReader in = new BufferedReader(new FileReader("\\chisla.txt"));
int [] array= new int [100];
String s =in.readLine();
int i = 0;
while(s!=null)
{
try {
array[i++] = Integer.parseInt(s);
}
catch (NumberFormatException ex) {
continue;
}
s = in.readLine();
}
in.close();
В массив закидывать не обязательно, вы просто можете прочитать построчно файл, сравнивая с текущим максимумом:
public static void main(String[] args) throws FileNotFoundException, IOException {
BufferedReader in = new BufferedReader(new FileReader("\\chisla.txt"));
String text;
int max = Integer.MIN_VALUE;
while ((text = in.readLine()) != null) { // читаем файл построчно
if (Integer.parseInt(text) > max) // ищем максимум
max = Integer.parseInt(text);
}
System.out.println("Max: " + max);
in.close();
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости