Olá! Estou com um problema em um código Java, mais especificamente em passar valores para um vetor estático. Preciso que os vetores estáticos inicio e fim, recebam os valores de um outro vetor chamado lineint.
Segue o trecho do código:
for(int i = 1; i<lineint.length;i+=2){ //Valores de início
int c=0;
inicio = new int[lineint.length/2];
inicio[c]=lineint[i];
c++;
}
for(int i = 2; i<lineint.length;i+=2){ //Valores de final
int c=0;
fim = new int[lineint.length/2];
fim[c]=lineint[i];
}
Coloco também o código todo para que vocês possam entender melhor:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class Guloso {
static int selecaoGulosa(int[] ini, int[] fim, int n){
int ultimaSelecionada=0;
int selecionadas=0;
String sel="1";
if (n==0) return 0;
// a primeira atividade é sempre selecionada
selecionadas++;
for (int i=1;i<n;i++)
if (ini[i]>=fim[ultimaSelecionada]){
String at = Integer.toString(i+1);
sel = sel + " " + at;
selecionadas++;
ultimaSelecionada = i;
}
System.out.print(selecionadas+ " "+ sel);
return selecionadas;
}
// as atividades devem ser ordenadas pelo campo fim ou seja, as atividades que acabam primeiro ficam na frente
private static int numeroDeAtividades;
private static int numeroDeInstancias;
private static int[] inicio;
private static int[] fim;
public static void main(String[] args) {
Scanner ler = new Scanner(System.in);
System.out.printf("Informe o nome de arquivo texto:\n");
String nome = ler.nextLine();
try {
FileReader arq = new FileReader(nome);
BufferedReader lerArq = new BufferedReader(arq);
String linha = lerArq.readLine(); // lê a primeira linha
numeroDeInstancias = Integer.parseInt(linha); // armazena a quantidade de "problemas" (linhas que serão resolvidas)
linha = lerArq.readLine();
String [] line = linha.split(" ");
int[]lineint = new int[line.length];
for (int i = 0; i < lineint.length; i++) {
lineint[i] = Integer.parseInt(line[i]);
}
numeroDeAtividades = lineint[0];
System.out.print(numeroDeAtividades+" "); //imprime a quantidade de atividades
for(int i = 1; i<lineint.length;i+=2){ //Valores de início
int c=0;
inicio = new int[lineint.length/2];
inicio[c]=lineint[i];
c++;
}
for(int i = 2; i<lineint.length;i+=2){ //Valores de final
int c=0;
fim = new int[lineint.length/2];
fim[c]=lineint[i];
}
selecaoGulosa(inicio,fim,numeroDeAtividades);
arq.close();
} catch (IOException e) {
System.err.printf("Erro na abertura do arquivo: %s.\n",
e.getMessage());
}
}
}
