Imprimindo em linhas diferentes - AJUDA-

Estou tentando fazer a impressão de um .txt, porém quando mando imprimir ele imprimi tudo na mesma linha, gostaria de imprimir da forma que esta no .txt.
obs: sempre vão ser itens diferentes. então não da pra colocar direto no System.out.print

package ItensMagicos;

import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Random;

public class Main {

    public static void main(String[] args) throws IOException {
        Random random = new Random();
        int item = random.nextInt(918) + 1;

        BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\Bruno\\Downloads\\itens.txt"));
        String currentLine;

        int lineCounter = 1;
        while (true) {
            currentLine = br.readLine();
            if (lineCounter == item) {
                System.out.println("Voce encontrou um item, " + currentLine);
                Path path = Path.of("C:\\Users\\Bruno\\Downloads\\Nova pasta\\itens numerados\\1.txt");

                String array = String.valueOf(Files.readAllLines(path));
                System.out.print(array);
                break;

            }
            lineCounter++;

        }

    }
}

esta imprimindo dessa forma

gostaria que ele imprimisse dessa forma.

Doze destes ábacos foram construídos originalmente pelo grande Mago Theoprastus,
para auxiliar seus acólitos a realizar cálculos complexos envolvendo compras e vendas
de poções e elixires. Os doze ábacos originais eram feitos de marfim com contas de pérolas,
decorados com várias inscrições em prata.
Outros Magos gostaram da idéia, e Theoprastus construiu outros trinta e seis ábacos para
vender a seus colegas alquimistas, ao longo de sete anos. Os ábacos da segunda remessa
eram feitos de sândalo, com contas douradas.
Após a morte de Theoprastus, o segredo da confecção dos ábacos foi revelado, e outros Magos
também construíram ábacos semelhantes, feitos de diversos outros materiais.
Os ábacos possuem dez fios metálicos, onde ficam dez contas em cada fio.
Quando o Dono do ábaco zera as contas, o item é ativado. A partir disto, o Usuário imagina
as contas que deseja realizar de cabeça e o ábaco movimenta as peças nos fios, fornecendo
a resposta exata para a conta proposta.

Variantes conhecidas              1d100

Ábaco de Cálculo			      01 -60
Ábaco de Contagem      	          61-94
Ábaco de Theoprastus (sândalo)    95-98
Ábaco de Theoprastus (originais)  99-00

Ábaco de Contagem: Semelhante ao Ábaco de Cálculo, mas é capaz de realizar contagens à
distância, calculando números que o Usuário não possui (por exemplo, o número de carneiros
em uma pastagem, ou o número de barcos ancorados em um porto). A única limitação é que o
Usuário precisa ser capaz de enxergar os objetos que deseja conter.

Files.readAllLines(path) retorna uma lista de Strings, com uma linha por item.
String.valueOf(...) vai converter essa lista numa String. Como os pulos de linhas indicam os novos elementos, vc os perdeu na leitura.

Sendo assim, troque:

String array = String.valueOf(Files.readAllLines(path));
System.out.print(array);

Por:

for ( String linha : Files.readAllLines(path) ) {
    System.out.println( linha );
}

Uma dica, se vc aprender a ler a documentação, muita coisa vc consegue entender o que precisa ser feito ou como deve ser usado. Link para o método readAllLines de Files: Files (Java Platform SE 8 )

1 curtida

show, muito obrigado, ficou lindo demais…

agora ja aproveitando, e se no lugar desse

Path path = Path.of(“C:\Users\Bruno\Downloads\Nova pasta\itens numerados\1.txt”);

fosse um arquivo aleatorio. pq tipo, estou tentando fazer ele sortear entre 918 itens, porem cada um tem uma descrição diferente…

ai estou tentando fazer ele sortear o item e mostrar a descrição dele que vai estar em outro .txt (que no caso vai ser sempre aleatorio de acordo com o sorteio do

int item = random.nextInt(918) + 1;
BufferedReader br = new BufferedReader(new FileReader(“C:\Users\Bruno\Downloads\itens.txt”));
String currentLine;

É só criar uma String com o caminho baseado no gerador aleatório.
Algo como:

// pode usar / direto, não precisando escapar o \ do Windows com \

int item = random.nextInt(918) + 1;
Path path = Path.of( String.format( “C:/Users/Bruno/Downloads/Nova pasta/itens numerados/%d.txt”, item ) );

1 curtida

fiz assim

Path path = Path.of(“C://Users//Bruno//Downloads//Nova pasta//itens numerados//%d.txt” , String.valueOf(item));
for ( String linha : Files.readAllLines(path) ) {
System.out.println( linha );
}
break;
}

porem fica dando erro no readAllLines, sendo que quando estava com arquivo especifico (1.txt) ele estava lendo normal

no final consegui acertar isso dessa forma

Path path = Path.of(“C://Users//Bruno//Downloads//Nova pasta//itens numerados//” + item + “.txt”);
for (String linha : Files.readAllLines(path)) {
System.out.println(linha);

só colocando o + item + entre o “itens numerados//” e o “.txt”