Oi galera, sou iniciante no java e estou fazendo um trab da faculdade e estou com um problema que parece bobo mas esta me atrapalhando.
No trabalho eu tenho que ler um arquivo de entrada e ultilizei o filereader(“o diretorio do meu pc”) para ler o arquivo com o diretorio completo do meu pc até o arq txt, entretanto tenho que enviar em uma pasta o arquivo java junto com esse arquivo de entrada para o professor executar.
Porem é claro que o diretorio do meu pc é diferente do professor, como eu faço para o filereader() ler o arquivo txt na pasta.
Segue abaixo o meu cod:
package ad2;
import java.io.;
import java.util.;
class lerArqEntrada{
public lerArqEntrada(){
}
// public List pegaNomes(){
// return nomes;
// }
}
class criarArqSaida {
List nomes;
List NeK;
public criarArqSaida(List nomes, List NeK ){
this.nomes=nomes;
this.NeK=NeK;
// Gravar arquivo
BufferedWriter escreve;
try{
escreve = new BufferedWriter(new FileWriter(“C:\Users\rafae\Desktop\saida-ArqEntrada.txt”));//LEMBRETE: antes de entregar mudar diretorio para pasta do envia
for(int g=1;g<NeK.size();g++){ //loop gravar linha a linha na saida
resolveJosephus resultado = new resolveJosephus();
escreve.write(resultado.resolveJosephus(nomes, NeK,g));
escreve.newLine();
}
escreve.close();
} catch (IOException e){
System.out.println(“Não foi possivel criar o arquivo!!!”);
}
}
}
class resolveJosephus{
List nomes;
List NeK;
public String resolveJosephus(List<String> nomes, List<Integer> NeK,int g){
this.nomes=nomes;
this.NeK=NeK;
// Resolver Problema de Josephus
List<String> nomeCP = new ArrayList<>();
nomeCP.addAll(nomes);
int cont=0, idx = -1;
do{
cont+=1;
idx+=1;
if(cont==NeK.get(g)){ // para "get(1)", o "1" deve ser substituido por cada "k" ("n" contem quantos K's tem)
nomeCP.remove(idx);
cont=1;
System.out.println(nomeCP);//retirar !!!!!!!
}
if((idx==nomeCP.size()-1)){idx=-1;} else if(idx==nomeCP.size()) {idx=0;}
} while(1!=nomeCP.size());
String resp;
resp = NeK.get(g)+" "+nomeCP.get(0);
return resp;
}
}
public class AD2 {
public static void main(String[] args) {
// Ler arquivo e separar e colocar nomes em 1 array e valores de N e K em outro array
int fim=0, i=0;
List nomes = new ArrayList<>();
List NeK = new ArrayList<>();
boolean EhNK = false;
BufferedReader le;
try{
le = new BufferedReader(new FileReader(“C:\Users\rafae\Desktop\ArqEntrada.txt”));//LEMBRETE: antes de entregar mudar diretorio para pasta do envia
while (le.ready()){
nomes.add(le.readLine()); //coloca as linhas do arq no array
if (EhNK){NeK.add(Integer.parseInt(nomes.get(i)));} // colocando no array o “N” e os “k”
if(nomes.get(i).equals("FIM")){ // indica quando começa "N" e "K"
EhNK = true;
fim = i;//a posição de Fim é guardada
}
i++;
}
System.out.println(nomes);//retirar !!!!!!!
System.out.println(NeK);//retirar !!!!!!!
le.close();
} catch (IOException e){
System.out.println("Arquivo não encontrado");
}
i = 0; //Remove o "N" e "K" do array "nome"
while(i!= NeK.size()+1){
nomes.remove(fim);
i++;
}
System.out.println(nomes);//retirar !!!!!!!
// result >>>>>>>> [nomes], [NeK] e
new criarArqSaida(nomes,NeK);
}
}