¿Cómo incremento un valor con letras en un bucle anidado en Java?

Soy un estudiante Java de nivel principiante en la escuela y estoy atrapado en una actividad de desafío en mi programa de libros de texto, estoy usando un libro de texto de zybooks.com y en esta actividad específica solo puedo cambiar el código que el programa me permite a. Además, debido a dónde estoy en el libro de texto, solo puedo usar cosas simples como bucles y declaraciones if. Aquí están las direcciones exactas de la actividad,

Dado numRows y numColumns, imprima una lista de todos los asientos en un teatro. Las filas están numeradas, las columnas con letras, como en 1A o 3E. Imprima un espacio después de cada asiento, incluso después del último. Use declaraciones de impresión separadas para imprimir la fila y la columna. Ej: numRows = 2 y numColumns = 3 impresiones: 1A 1B 1C 2A 2B 2C.

Entonces, lo que actualmente estoy atascado es imprimir las columnas de forma incremental como letras. En este momento obtengo 1A 2A 3A y así sucesivamente cuando lo que quiero es 1A 1B 1C 2A 2B 2C> ¿Cómo incremento esa fila de columnas con letras?

Además, el programa no debería ejecutarse cuando no hay entrada de columnas, pero mi programa imprimirá las filas y no columnas, que tampoco es lo que quiero. Por ejemplo, numRows = 3 y numColumns = 0, el programa no debería imprimir nada, pero lo que sucede es que el programa imprimirá solo las filas como esta 123. ¿Cómo hago para que el programa no se ejecute si no hay columnas? ¿entrada?

Aqui esta mi codigo

 import java.util.Scanner;
 public class NestedLoops {
 public static void main (String [] args) {
  Scanner scnr = new Scanner(System.in);
  int numRows;
  int numColumns;
  int currentRow;
  int currentColumn;
  char currentColumnLetter;

  numRows = scnr.nextInt();
  numColumns = scnr.nextInt();

 //what the text book allows me edit
 for(currentRow = 1; currentRow <= numRows; ++currentRow){
    System.out.print(currentRow);
    currentColumnLetter = 'A';

    for(currentColumn = 1; currentColumn <= numColumns; ++currentColumn){
       currentColumn = currentColumnLetter;
       System.out.print(currentColumnLetter + " ");
     }
     ++currentColumnLetter;
 }//the textbook won't let me edit the lines after this brace
  System.out.println("");
 }
}

Tenga en cuenta que solo puedo ajustar el código que está después de inicializar las variables numRows y NumColumns y antes del System.out.print final ("") ;.

Respuesta 1

En Java, en charrealidad funciona bastante similar a int. Lo que el char realmente almacena es un código de caracteres, que puede hacer esencialmente cualquier cosa que pueda hacer con un int. Por ejemplo, el carácter 'a'corresponde al código 97. Si lo hicieras (char) 'A' + 1, el resultado sería 'B'. Puede usar esto para incrementar el carácter de la columna en su bucle interno.

(Tenga en cuenta que (char)esto se llama conversión y es necesario para que Java sepa interpretar el resultado como una cadena. Siempre es una buena idea emitir cuando se realizan operaciones entre tipos mixtos, por lo que el resultado no es ambiguo)

Referencia de tabla ASCII


Su código imprime las filas cuando numColumns = 0porque no hay comprobaciones numColumnsantes de que se ejecute la primera instrucción de impresión. Debe asegurarse de que solo imprima la salida cuando numColumns > 0.

Respuesta: 2

Supongo que quieres decir:

for(currentRow = 1; currentRow <= numRows; ++currentRow){
    for(currentColumn = 0; currentColumn < numColumns; ++currentColumn){
        System.out.print(""+currentRow+(char)('A'+currentColumn) + " ");
    }
}
Respuesta: 3

Como currentColumnLetter es un char, simplemente puede incrementarlo, solo asegúrese de lanzarlo. También deberá crear una nueva variable para mantener su incremento en línea recta.
char newLetter = (char) (currentColumnLetter + currentColumn);

Respuesta: 4

Use solo 1 declaración de impresión dentro del forbucle interno .
Esto imprimirá el número de la fila seguido del carácter que corresponde
al 64 + currentColumncódigo ASCII, porque el código ASCII de Aes 65:

public static void main(String[] args) {
    Scanner scnr = new Scanner(System.in);
    int numRows;
    int numColumns;
    int currentRow;
    int currentColumn;

    numRows = scnr.nextInt();
    numColumns = scnr.nextInt();

    if (numColumns < 1)
        System.exit(1);

    for(currentRow = 1; currentRow <= numRows; currentRow++){
        for(currentColumn = 1; currentColumn <= numColumns; currentColumn++){
            System.out.print(String.valueOf(currentRow) + (char)(64 + currentColumn) + " ");
        }
    }
    System.out.println("");
}
Respuesta: 5

Actualmente, el método replaceAll de la clase String, junto con los métodos Matcher.replaceAll evalúan sus argumentos como expresiones regulares. El problema que tengo es que la cadena de reemplazo ...

Estoy buscando una manera de procesar una gran cantidad de datos que se cargan desde la base de datos en un tiempo razonable. El problema al que me enfrento es que tengo que leer todos los datos de la base de datos (...

Hasta el lanzamiento reciente de la nueva implementación de Java / Kotlin para Actions on Google (com.google.actions: actions-on-google: 1.0.2 Maven coordenadas), hemos estado (con éxito) utilizando su biblioteca de pares (com ...

Tengo la tabla CREATE TABLE test_wopk (número entero id, carácter "nombre" (25), número entero de edad) Después de la ingeniería inversa en hibernación, obtengo un archivo de clases y mapeo. TestWopk.java package gen; // ...