Problema de array: comparar length com uma incognita

9 respostas
C

Boas, sou iniciante em java. Quero saber se é possivel fazer este tipo de exercicio

class ComparisonDemo {

public static void main(String[] args){

int value1 = 1;

int value2 = 2;

if(value1 == value2)

System.out.println(value1 == value2);

if(value1 != value2)

System.out.println(value1 != value2);

}

}

mas em que um dos valores, por exemplo o value1 seja uma variavel? queria criar um array de comprimento x qualquer, que quando comparado diga antes de chegar ao fim do array acontece ‘resultado1’ mas quando chega ao fim ai ja da o resultado2 (mas so quando se chega ao ultimo valor do array). Ainda nao sei como é que a variavel vai obter valores mas para ja queria saber se isto era possivel.

agradeço desde ja qualquer dica que possam dar, cumprimentos

9 Respostas

Hildebrando_Pedroni

Cara, não entendi direito a sua duvida.

Comparado a que?

Você quer comparar os valores do array?
você quer comparar o tamanho do array com os valores do array?

Explique melhor.

class ComparisonDemo { 
      public static void main(String[] args){ 
          int value1 = Integer.parseInt(args[0]); // pega um valor de args 
          int value2 = 2; 
          int[] vetor = new int[10]; // vc quer criar o array como assim? Ou com um valor vindo de algum lugar?

          //Que comparação vc quer fazer aqui?
          if(value1 == value2) 
              System.out.println("value1 == value2"); 
          if(value1 != value2) 
              System.out.println("value1 != value2"); 
           } 
      }

[]'s

C

Queria comparar uma variavel x as posiçoes do array, por exemplo: eu crio um array de comprimento 50 e quero executar um programa que me indique quando atingi a posiçao nº 50, nao se me expliquei melhor agora

cumps

C

o codigo que fiz foi

public static void main(String[] args){

int value1 = //variavel;

int value2 = 50;

if(value1 == value2)

System.out.println(atingiu a posiçao 50);

if(value1 < value2)

System.out.println(ainda nao atingiu a posiçao 50);

a minha duvida esta na introduçao das variaveis, como identificar o valor1 como uma incognita?

Hildebrando_Pedroni

Tente isso:

public class Array {
	public static void main(String[] args) {
		int[] vetor = new int[50];
		int variavel = vetor.length - 1; // aqui estamos colocamos - 1 porque vamos comparar com i. O nosso vetor tem 50 posições de 0 a 49
		
		for (int i = 0; i < vetor.length; i++) {
			if (i == variavel){ // aqui eu poderia fazer assim tb : if (i == (vetor.length -1)) Eliminando a variavel la em cima.
				System.out.println("Fim do vetor");
			}else{
				System.out.println("Percorrendo...");
			}
		}	         
	}
}

Se não for isso que vc quer me avise.

Hildebrando_Pedroni

Para vc deixar uma variavel vamos dizer incognita, vc deve manda-la de alguma forma…

Eu faria o seguinte

int incognita = Integer.parseInt(args[0]);

isso pega um numero passado como argumento para o seu programa… Claro que se vc mandar uma letra uma exceção será lançada.

Ai vc compila por exemplo assim.

javac MeuPorgrama.java 10

C

ahh -1 porque o array começa na posiçao 0 e tenho que subtrair -1 para obter o ultimo elemento entendi, mto obrigad!

Se eu quisesse contar as vezes que o array chegou ao fim, posso implementar isso no mesmo if?

do tipo System.out.println(“Fim do vetor”)&&//total=total +1

nao sei se é possivel fazer isto em java, eu programei num programa muito facil e basico e so tinhamos que fazer isso

obrigado de novo pela ajuda! :slight_smile:

Hildebrando_Pedroni

Como assim contar quantas vezes o array chegou ao fim?

Ele vai chegar ao fim uma unica vez, a não ser que vc o percorra varias vezes dentro de um outro for ou loop while.

Ai vc pode declarar uma variavel contador e incrementa-la dentro do seu if mesmo.

Agora se vc for por exemplo chamar um metodo que percorra esse array, e todas as vezes que ele chegar no final do array vc precisar de um unico contador que conte quantas vezes o fim chegou, ai vc vai precisar declarar um contador estatico.
Mas acho que não é isso que vc quer.

C

ah muito util toda a informaçao que me deu, por acaso tava curiosa em relaçao ao contador. Vc resolveu todas as minhas questoes

muito obrigada mesmo

cumprimentos

Hildebrando_Pedroni

Uma variavel estatica é uma variavel que tem um particularidade interessante, ela não é uma variavel de instancia, é como se fosse uma variavel global, então quando vc da um new ela não é inicializada novamente.

no caso vc poderia fazer o seguinte:

public class Array {  
    
static int contador = 0;
public static void main(String[] args) {  
        int[] vetor = new int[50];  // Variavel estatica
        int variavel = vetor.length - 1; // aqui estamos colocamos - 1 porque vamos comparar com i. O nosso vetor tem 50 posições de 0 a 49  
          
        for (int i = 0; i < vetor.length; i++) {  
            if (i == variavel){ // aqui eu poderia fazer assim tb : if (i == (vetor.length -1)) Eliminando a variavel la em cima.  
                System.out.println("Fim do vetor");  
                contador++; //incrementa a variavel estatica. 
            }else{  
                System.out.println("Percorrendo...");  
            }  
        }              
    }  
}

neste caso, não importa se de onde vc chamou o percorredor de array, sempre que ele incrementar o contador o mesmo vai ser um numero maior do que o anterior e será sempre crescente, nunca voltando ao estado 0, a não ser que vc faça ele voltar a este estado é claro.

Mas variaveis estaticas devem ser usadas com cautela, pois podem gerar dados incorretos caso sejam utilizadas de maneira errada.

Que bom que eu ajudei.

abraços.

Criado 21 de março de 2010
Ultima resposta 21 de mar. de 2010
Respostas 9
Participantes 2