Autor Tema: Java resolver ejercicio con arreglos de una dimensión y dos dimensiones código  (Leído 1921 veces)

Janely Gomez

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Hola  :) , apenas estoy empezando a aprender a programar y tengo fallas con un código en java , el problema es el siguiente:

Una compañía manufacturera tiene 12 plantas.Elaborar un algoritmo que permita leer el nombre de cada planta y la producción que se hizo cada uno de los 7 días de la semana.Utilizar un arreglo de una dimensión para leer los nombres de las plantas y un arreglo de 2 dimensiones (12x7) para leer la producción de las 12 plantas (uno en cada renglón) en los 7 días, una columna para cada día. La idea es leer el nombre de la primera planta y luego la producción hecha en cada uno de los 7 días, luego procesar la planta 2, posteriormente la 3 y así sucesivamente. Imprimir lo siguiente:

Una tabla donde se muestren todos los datos. (ruta C:/fotos/imagen.jpg)

Mi código tiene errores  :-[, pero no se que hacer.

Código: [Seleccionar]
package BVP;
import java.util.*;

public class Produccion7dias_Plantas {
 
    static byte col;
    static byte fila;
    static float [] planta=new float[6];
    static float [] totalv=new float[5];
    static byte r;
    static byte a1;
    static byte a2;
    static byte a3;
    static byte a4;
    static byte a5;
   
    public static void main(String[] args) {
    Scanner dato= new Scanner(System.in);
        byte[][] dtrabajados= new byte[6][7];
        String [] n=new String [6];
       
        for(fila=0;fila<=5;fila++){
            System.out.println("Nombre de planta");
            n [fila]=dato.next();
           
               r=0;
        for(col=0;col<=6;col++){
     
            r++;
            System.out.println("Venta en el dia "+r+" de "+n[fila]);
            dtrabajados [fila][col]=dato.nextByte();
           
        }
        }
        for(fila=0;fila<=5;fila++){
          for(col=0;col<=6;col++){
              if(fila==0) {a1=(byte) ( a1+  dtrabajados [fila] [col]);}
              if(fila==0) {a2=(byte) ( a2+  dtrabajados [fila] [col]);}
              if(fila==0) {a3=(byte) ( a3+  dtrabajados [fila] [col]);}
              if(fila==0) {a4=(byte) ( a4+  dtrabajados [fila] [col]);}
          } 
       }
       planta[0]=a1;
       planta[0]=a2;
       planta[0]=a3;
       planta[0]=a4;
       planta [0]=a5;
       
        for(col=0;col<=6;col++){
             }
        for(fila=0;fila<=5;fila++){
          for(col=0;col<=6;col++){
              if(fila==0) {a1=(byte) ( a1+  dtrabajados [fila] [col]);}
              if(fila==0) {a2=(byte) ( a2+  dtrabajados [fila] [col]);}
              if(fila==0) {a3=(byte) ( a3+  dtrabajados [fila] [col]);}
              if(fila==0) {a4=(byte) ( a4+  dtrabajados [fila] [col]);}
              if(fila==0) {a5=(byte) ( a5+  dtrabajados [fila] [col]);}
          } 
       }
       totalv[0]=a1;
       totalv[0]=a2;
       totalv[0]=a3;
       totalv[0]=a4;
       totalv[0]=a5;
       
        for(col=0;col<=6;col++){
            System.out.println("Planta con mayor productividad");
            if((planta[0]=a1)>(a1+dtrabajados [fila][col])) {
            if((planta[0]=a2)>(a2+dtrabajados [fila][col])) {
            if((planta[0]=a3)>(a3+dtrabajados [fila][col])) {
            if((planta[0]=a4)>(a4+dtrabajados [fila][col])) {
            if((planta[0]=a5)>(a5+dtrabajados [fila][col])) {
                }
            } 
            } else {
            }
           
            System.out.print(dtrabajados[fila][col]+"    ");
        }
        System.out.println();
        }
    }
}
}


« Última modificación: 01 de Marzo 2018, 19:09 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:Arreglos Propuestos Ayuda por favor.
« Respuesta #1 en: 12 de Noviembre 2017, 17:49 »
Hola,

no podemos ver la imagen jpg que has posteado ya que no la has subido a Internet. Has puesto directamente una "ruta interna" de tu ordenador, no una URL de la web... así que no sabemos que pide el enunciado completo y sería importante para poder ayudarte.

Trata de subirlo a alguna web de alojamiento de imagenes, como http://www.subirimagenes.com por ejemplo.

O bien teclea tú la parte que no podemos ver.

De otro modo, no podemos saber que es lo que se supone que debes lograr hacer, y por lo tanto ver que estás haciendo mal.

Por lo pronto, veo un par de posibles fallos.
Código: [Seleccionar]
System.out.println("Venta en el dia "+r+" de "+n[fila]);
            dtrabajados [fila][col]=dato.nextByte();

Aquí por el mensaje en pantalla parece que estás pidiendo el valor de producción o venta del día, pero el dato que luego lees parecen ser... ¿los dias trabajados?

Luego, una pequeña tontería que nos pasa a todos...
Código: [Seleccionar]
System.out.println("Planta con mayor productividad");
            if((planta[0]=a1)>(a1+dtrabajados [fila][col])) {
            if((planta[0]=a2)>(a2+dtrabajados [fila][col])) {
            if((planta[0]=a3)>(a3+dtrabajados [fila][col])) {
            if((planta[0]=a4)>(a4+dtrabajados [fila][col])) {
            if((planta[0]=a5)>(a5+dtrabajados [fila][col])) {

En las condiciones de esos if, seguramente tendrás que poner doble igual "==" que es la instrucción para COMPARAR.
El igual simple "=" es la instrucción para ASIGNAR.

Hasta no conocer el enunciado completo, no podremos darte más indicaciones sobre como resolverlo.


Por último, solo un pequeño comentario, sin apenas importancia.

Los tipos de dato byte y float, está bien conocerlos y usarlos cuando puedan ser útiles. Pero en mi opinión, cuando se está aprendiendo, es mejor usar los tipos de datos que Java emplea por defecto, que son el int y el double.

Más que nada porque de lo contrario tienes que estar haciendo casting a byte o float varias veces, lo cuál provoca que el código sea un poquito más engorroso de leer y de escribir.. y de todos modos no ganas ninguna ventaja por usar tipos de datos que ocupan menos memoria, ya que hablamos de unos pocos bytes "de ahorro".

La verdadera utilidad de los tipos de dato float, byte, short.... es sobre todo en programas que tienen que trabajar con enormes colecciones de datos.
Por ejemplo operar con un arreglo que alberga, yo que se.. 5.000.000 de valores double supone un gran esfuerzo de procesado realizar operaciones aritméticas con ellos y puede ralentizar mucho la ejecución de un programa.
En cambio si podemos permitirnos transformarlos a float, el esfuerzo es mucho menor.

Aquí si que se nota, pero en pequeños ejercicios de aprendizaje como el que estamos haciendo, no aporta nada, excepto obligarnos a hacer casting de datos.
Así que es más comodo usar int y double directamente, excepto claro está, que el enunciado del ejercicio o el profesor que luego vaya a corregir el trabajo, pida expresamente utilizar otros tipos de datos.

Un saludo
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".