que resulte numa representação em string da sequência de elementos a[0]; a[1]; … a[j-1].
A representação deverá ficar delimitada pelos carácteres “[” e “]”.
Os elementos deverão ficar por ordem dos índices e separados por vírgulas.
Por exemplo, quando a sequência dos elementos do array a for 3; 14; 1; 9 e j for 3 o resultado será [3,14,1]. [/quote]
eu fiz um código que dá o mesmo resultado, no entanto não me aprece estar muito correcto nem ser exactamente aquilo que é pedido.
alguém consegue perceber se é assim ou é para fazer de outra maneira?
Agradeço desde já a quem ajudar.
Código solução:
[code]import java.util.*;
public class parteII1 {
static String s;
static int k;
public static String paraString(int[]a, int j, int k){
s=""+a[k]+",";
return s;
}
public static void main(String[] args){
Scanner keyboard= new Scanner(System.in);
System.out.println("introduza um numero inteiro");
int j = keyboard.nextInt();
int[]a;
a = new int[j];
int i =0;
int k=0;
while (i<=j-1){
System.out.println("introduza um numero inteiro");
a[i] = keyboard.nextInt();
i++;
}
System.out.print("[");
while (k<=j-2){
paraString(a,j,k);
System.out.print(s);
k++;
}
System.out.print(a[k]+"]");
}
é isso mesmo jamacedo obrigado =)
estava a fazer parte dentro do main mas o objectivo é fazelo no método parastring eu é que não conseguia, obrigado, vou estudar esse exemplo e ver se consigo fazer os outros 5 aseguir que sao aprecidos. abraço e obrigado
Só não envie uma String como aquela com “Impossivel gerar array” por que já que voce espera uma representação do array como string talvez voce queira trata-lo mais pra frente.
public static String paraString(int[]a, int j){
if(j > a.length)
throw new IllegalArgumentException("Forneça um número menor que o array!");
StringBuilder array = new StringBuilder("[");
for(int i = 0; i < j; i++)
array.append(a[i]).append(",");
array.append("]");
return array.toString();
}
Não concatene Strings diretamente. A performance é péssima. Use para isso um StringBuilder, como feito no exemplo acima.
Também procure organizar o código para não haver identação desnecessária. Por exemplo, não é necessário usar else se o código dentro do if dá return ou lança exceção.
Shponja, não sei se você pode usar os métodos da classe String, mas se puder adicione uma linha para remover a ultima virgula:
public static String paraString(int[]a, int j){
if(j <= a.length){
String array = "[";
for(int i = 0; i < j; i++)
array+=a[i]+",";
//com essa linha nos retiramos a ultima virgula do string
array = array.substring(0, array.length()-1);
array += "]";
return array;
}
throw new IllegalArgumentException("Variável inválida");
}
nao sei o que é essa instruçao throw new
o primeiro codigo nao estava errado era só necessário modificar uma coisa mas com essas instruções eu já não posso fazer. De qualquer forma o problema está resolvido, estou a tentar fazer o próximo a ver se consigo.
[code]public static String paraString(int[]a, int j){
if (j <= 0 || a.length == 0)
return “[]”;
if (j > a.length)
j = a.length;
String retorno = “[” + a[0];
for (int i = 1; i < j; i++)
retorno += ", " + a[i];
retorno += “]”;
return retorno;
}[/code]
Assim, se J for > que o array, o array todo é retornado. Se J for <= 0, nada é retornado. Um comportamento bastante válido. E esse código já corrige também o problema da vírgula, sem usar o substring.
agora estou a tentar com esse ultimo codigo (partido do principio que a dimensao do array a = j ) fazer um print como pede o exercicio mas nao consigo.
public static String paraString(int[] a, int j){
int [] x = new int[j];
System.arraycopy(a, 0, x, 0, j);
return java.util.Arrays.toString(x);
}
public static void main(String [] xxx){
int [] x = {
1,2,3,4,5,6,7,8,9,10
};
System.out.println("Laos.paraString(x,5)=>" + Laos.paraString(x,4));
}