Estou fazendo um exercício da facul e o enunciado pede o seguinte: "Escreva um programa em Java que leia uma sequência N de números inteiros (negativos, positivos e o zero) para um vetor. No início do programa é solicitado ao usuário (pelo teclado) qual é a quantidade de elementos que serão lidos para o vetor e depois disso os números são lidos para o vetor. Em seguida você deve implementar para cada um dos itens abaixo uma função: a) Calcule e retorna o valor da maior diferença entre dois elementos distintos no vetor. b) Verifica se o vetor está em ordem crescente, e retorna true caso esteja e false caso contrário."
Mas não estou conseguindo nem codificar o começo onde é solicitado criar um vetor para o usuário definir seu tamanho. Agradeço quem puder me ajudar
Você sabe ler pelo menos um valor do teclado e guardar em uma variável?
Scanner s = new Scanner( System.in);
int tamanho = Integer.parseInt( s.nextLine() );
int[] array = new int[tamanho]; // cria um array com o tamanho especificado
Você leu o código? Você entendeu o código? É exatamente isso que ele faz. Lê uma linha da entrada padrão, converte para inteiro, armazena na variável tamanho e cria um array (que você está chamando de vetor) de tamanho igual ao inteiro (positivo) contido na variável tamanho.
Eu tenho uma birra enorme com essa história de chamar array de vetor… Um array não é um vetor, mas teimam em levar isso adiante…
Agora que entendi essa conversão, fiquei meio perdido porque no primeiro semestre da faculdade estavam ensinando lógica com Javascript e agora no segundo estão ensinando Java sem mais nem menos, então não me acostumei ainda com a linguagem. E desculpe, não sabia que era errado chamar Array de vetor. Obrigado pela ajuda
Pelo que entendo (por faor me corrija @davidbuzatto se eu estiver enganado), array significa matriz, então pressupõe uma condição com linhas e colunas. Um vetor é uma matriz de linha única, portanto todo vetor seria matriz (array) mas nem toda matriz seria um vetor.
Array é array, vetor é vetor. A tradução mais apropriada para array é arranjo. Até onde eu sei, as primeiras pessoas que trabalharam com computação no Brasil foram o pessoal das engenharias e como um array se parece com um vetor de uma dimensão, passaram a chamar arrays de vetores, trazendo a ideia dos vetores lá da matemática. Na matemática existe uma série de operações e propriedades dos vetores que não se aplicam aos arrays, por exemplo, você pode somar vetores, multiplicar por um escalar etc, o que não se pode fazer com os arrays. A mesma coisa pode-se dizer dos arrays de duas ou mais dimensões (em Java, um array de duas dimensões é um array de arrays, o que vale para dimensões maiores tbm) que, erroneamente, são chamados por aqui de matrizes. Os vetores na matemática fazem parte de uma classe de “objetos” ainda mais genéricos, chamados de tensores.
O correto é dizer que usamos um array para representar os valores de um vetor, ou um array de duas dimensões para representar os valores de uma matriz, mas não que arrays são vetores ou matrizes. Isso é simplesmente errado.
Há o argumento que a mesma palavra pode ser usada em mais de um contexto, por exemplo, um vetor de uma doença é um organismo que a dissemina a outros organismos, mas pra mim isso não cola no contexto da computação, pq chamam arrays de vetores dando exatamente a ideia de que os arrays são vetores lá da matemática e, como eu já falei, eles não são!
Se os arrays fossem vetores, eles seriam chamados de vectors, não de arrays.
É claro, você pode ter um tipo vetor, implementando uma classe para isso ou usando os arrays para representá-los, mas, mais uma vez, insisto. Array é array. Vetor é vetor.
E só pra confundir ainda mais, em Java existe a classe java.util.Vector, que segundo a documentação é um “growable array of objects” (ou seja, um array que pode aumentar o tamanho conforme a necessidade - portanto, nada a ver com a definição matemática de vetor).
O fato/problema é que cada linguagem dá os nomes que bem entender:
Em Java, chamaram de array as estruturas que têm tamanho fixo e todos os elementos são do mesmo tipo, e se quiser estruturas de tamanho flexível, tem que usar as collections (incluindo o já citado Vector, que apesar do nome, não é um vetor - pelo menos segundo a definição matemática).
Em JavaScript só existe Array, que tem tamanho flexível e pode ter elementos de qualquer tipo. Ou seja, o oposto da definição de array do Java…
Em Python tem as listas (também com tamanho flexível, elementos de qualquer tipo, etc), e tem também o array (que só pode ter elementos do mesmo tipo, mas ainda sim tem tamanho flexível).
Mas aí tem bibliotecas como o numpy, que define um tipo básico chamado ndarray (que ele chama o tempo todo de array, com tamanho imutável e todos os elementos do mesmo tipo), mas que suporta operações como multiplicar por um escalar (tal como é feito com vetores - exemplo - por que não chamou de vetor, então?)
Isso só pra ficar em 3 linguagens, pra ver como ninguém parece se importar com o rigor da definição matemática e dá os nomes que acham melhor. De qualquer forma, é importante saber a diferença e usar os termos corretos (sendo que “corretos” depende do contexto: se for falar de determinada linguagem, prefira os termos que ela definiu, fazer o que, senão vira conversa de maluco, cada um chamando de um nome diferente e ninguém se entendendo).
Mas de qualquer forma, dizer que “array significa matriz” está errado
Você até pode representar matrizes usando arrays, mas um array não é uma matriz (pois você tem que garantir manualmente que a estrutura está correta - cada linha tem a mesma quantidade de colunas, etc). Em C#, por exemplo, existem os multi-dimensional arrays, que seria mais próximo de uma matriz do que um simples array de arrays do Java (pois ele te dá garantias das dimensões, não deixa mudar uma “linha” para ter uma quantidade de elementos diferente, etc). Mesmo assim, chamaram de array, não de matriz…
Enfim, é importante saber de onde vem esses nomes (já foi explicado acima) e estar ciente das “deturpações” que cada linguagem/API faz com relação à nomenclatura original. Assim você evita ruídos de comunicação (ou fica ainda mais confuso, como é o meu caso)
Não peça desculpas, esse cara é um parvo. Só imbecis arrogantes ficam apegados a esse mero detalhe. Ele falou com você com arrogância e estupidez, “explicou” igual um troglodita e ainda se achou no direito de perguntar de forma agressiva se você não entendeu o que ele não soube explicar de uma forma didática. Quem deveria pedir desculpas é ele.
Uau, temos um justiceiro protetor dos oprimidos, escondido atrás de um perfil com apelido, num fórum público e dando sua liçãozinha de moral num tópico solucionado. Quer atenção né… Aqui não é o twitter não. Faça sua contribuição ao invés de torrar o saco, senhor “didática”.
Pena que nem os criadores de linguagens chegam a um consenso e temos essa bagunça de nomenclatura - que eu mencionei acima, inclusive. Se as pessoas tivessem mais apego aos nomes corretos para as coisas, não teríamos essa zona - que na minha opinião, é prejudicial à área como um todo.
Se fosse algo que ocorre só para esses termos, não seria um problema. Mas é algo que ocorre com muitos outros, tudo causado por essa atitude de “não importa o nome”. E o pior, tem gente que não liga pra essa bagunça, chamando de chato (e coisas piores) quem defende uma nomenclatura mais padronizada.
Antigamente, eu participava do extinto fórum JavaFree, lá eu costumava resolver exercícios de aula que era nítido a preguiça do participante em resolver.
Então eu postava soluções elegantes mas renomeava classes, métodos e variáveis para coisas absurdas sem sentido, quase como um ofuscador de código, só que aplicado no fonte:
Operações com nomes de frutas, objetos e outros substantivos.
Classes com nomes de adjetivos, ou verbos;
Variáveis numéricas com nomes de animais.
E assim por diante.
Aí entendiam a importância de usar o nome correto para as coisas.
“ti fará mal”. Não sabe escrever. O que vc quer é atenção né mocinha? Não seja por isso
Contrariar jovem chato é prazeroso demais! Se quiser continuar com o chilique pode continuar, é bom que eu me divirto
Vamos ver o quanto vc consegue me “ofender” com seu próximo textão cheio de itens pois, afinal, quem não domina a escrita precisa itemizar o que quer falar senão não consegue dar sentido ao texto.
Provavelmente a moderação vai trancar o tópico, pq aqui, como eu já disse anteriormente, não é o Twitter. Faça sua reputação brilhar ajudando os outros aí vc vai ter algum tipo de respeito por aqui. Estou na Internet desde que tudo isso era mato e um território sem lei e vem uma criança torrar meu saco pq eu falei assim ou assado
Tadinha, ela quer atenção. Deve estar fazendo um curso técnico ou em início de faculdade. Ela ainda está naquela época onde a gente acha que tem alguma importância para o mundo, em que as coisas sempre darão certo bastando querer, que faremos a diferença, que precisamos defender os “oprimidos”. Típico comportamento do jovem dinâmico criado à base de Toddy, bolacha recheada e McDonald’s. Ela queimou o pé com a minha primeira resposta ao PO, nem é por causa de nomenclatura