java - nxn - ¿Cómo puedo inicializar una matriz sin saber su tamaño?
matriz nxn java (6)
Aquí está el código para su clase. Pero esto también contiene mucha refactorización. Por favor, agregue un para cada en lugar de para. saludos :)
static int isLeft(ArrayList<String> left, ArrayList<String> right)
{
int f = 0;
for (int i = 0; i < left.size(); i++) {
for (int j = 0; j < right.size(); j++)
{
if (left.get(i).charAt(0) == right.get(j).charAt(0)) {
System.out.println("Grammar is left recursive");
f = 1;
}
}
}
return f;
}
public static void main(String[] args) {
// TODO code application logic here
ArrayList<String> left = new ArrayList<String>();
ArrayList<String> right = new ArrayList<String>();
Scanner sc = new Scanner(System.in);
System.out.println("enter no of prod");
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
System.out.println("enter left prod");
String leftText = sc.next();
left.add(leftText);
System.out.println("enter right prod");
String rightText = sc.next();
right.add(rightText);
}
System.out.println("the productions are");
for (int i = 0; i < n; i++) {
System.out.println(left.get(i) + "->" + right.get(i));
}
int flag;
flag = isLeft(left, right);
if (flag == 1) {
System.out.println("Removing left recursion");
} else {
System.out.println("No left recursion");
}
}
Tengo una situación en la que tengo que aplicar un criterio en una matriz de entrada y volver a generar otra matriz como salida que tendrá un tamaño menor en función de los criterios de filtrado.
Ahora el problema es que no sé el tamaño de los resultados filtrados, por lo que no puedo inicializar la matriz con un valor específico. Y no quiero que sea de gran tamaño, se anularán los valores porque estoy usando array.length; mas tarde.
Una forma es primero hacer un bucle en la matriz de entrada original y establecer un contador, y luego hacer otro bucle con esa longitud del contador e inicializar y completar esta matriz []. Pero ¿hay alguna manera de hacer el trabajo en un solo bucle?
Si lo haces así, puedes simplemente declarar una matriz, sin usar ninguna colección.
ClassName[] arrayname;
...
arrayname = new ClassName[10*15*100*variable+CONSTANT+Math.ciel(Math.Random())];
Solo devuelve cualquier tipo de lista. ArrayList estará bien, no es estático.
ArrayList<yourClass> list = new ArrayList<yourClass>();
for (yourClass item : yourArray)
{
list.add(item);
}
Utilice ArrayList. el tamaño de la matriz se fija en java
Utilice LinkedList
lugar. A continuación, puede crear una matriz si es necesario.
No se puede ... el tamaño de una matriz siempre se arregla en Java. Normalmente, en lugar de usar una matriz, usaría una implementación de la List<T>
aquí - generalmente ArrayList<T>
, pero con muchas otras alternativas disponibles.
Puede crear una matriz de la lista como un paso final, por supuesto, o simplemente cambiar la firma del método para devolver una List<T>
para comenzar.