Avatar billede OBS Juniormester
Oprettet i dag kl. 13:55 Der er 10 kommentarer

Programmering: Produktmixoptimering

Jeg har lavet programmering inddelt i 6 klasser. Jeg har en klasse: public class ProductMiixGUI extends JFrame{

private void optimize() {
try {
      String inputText =  maxQuantityField.get Text().trim();
      if (inputText.isEmpty() {
      JOptionPane.showMessageDialog(this, " Please enter a maximum quantity." , "Input Required", JOptionPane.WARNING_MESSAGE);
return;
}
int maxQuantity;
try {
      maxQuantity = Integer.parseInt(inputText);
} catch ( NumberFormatException e ) {
    JOptionPane.showMessageDialog(this, "Please enter a valid integer for maximum quantity.", "Invalid Input" , JOptionPane.ERROR_MESSAGE);
return;
}

if /maxQuantity <= 0 ) {
    JOptionPane.showMessageDialog( this, " Max quantity must be a positive integer." , "Invalid Input" , JOptionPane.WARNING_MESSAGE);
return;
}

// Kald optimeringsmetoden
productMix.optimizeMix(maxQuantity);

// Opdater  UI
updateTable();
totalValueLabel.setText( String.format ( " Total Value (USD) : %.2f " , productMix.calculateTotalValue())) ;

} catch ( Exception e ) {

  // Generel fejlbehandling
      JOptionPane.showMessageDialog( this, " An error occurred during optimization: " + e.getMessage() , "Error" , JOptionPane.ERROR_MESSAGE);
}
}
Derudover er der importExcel og exportExcel og de fungerer  fint.

Når programmet køres, vises " Max quantity must be a positive integer."  Mit spørgsmål: Hvad mangler i programmeringen, er der fejl i programmeringen ?
Avatar billede erikjacobsen Ekspert
Skrevet i dag kl. 16:54 #1
Den her ser underlig ud:

  if /maxQuantity <= 0 ) {

Det skal vel være

  if (maxQuantity <= 0 ) {
Avatar billede OBS Juniormester
Skrevet i dag kl. 16:58 #2
Ja det er en skrivefejl
Avatar billede erikjacobsen Ekspert
Skrevet i dag kl. 17:09 #3
Det kan ikke være en skrivefejl - du må jo have kopieret koden ind fra dine .java-filer. Hvis du har rettet til, fjernet noget, ændret noget, så spilder vi jo vores tid på at finde fejl.

Hvad er præcis den koder, hvor det går galt?
Avatar billede OBS Juniormester
Skrevet i dag kl. 17:23 #4
Det er indtastningsfejl, jeg har hverken fjernet noget eller ændret noget
Avatar billede erikjacobsen Ekspert
Skrevet i dag kl. 17:41 #5
Jamen, det kan slet ikke oversættes. Kopier teksten Copy/Paste, og lad os se den. Der er flere ting


Der er ikke mellemrum i getText():

  String inputText =  maxQuantityField.get Text().trim();

Der mangler en højreparentes:

  if (inputText.isEmpty() {

Vis os den præcise kode, der går galt.
Avatar billede OBS Juniormester
Skrevet i dag kl. 17:57 #6
Her en kopi:
private void optimize() {
       
            try {
                String inputText = maxQuantityField.get Text().trim();
                if (inputText.isEmpty()) {
                    JOptionPane.showMessageDialog(this, "Please enter a maximum quantity.", "Input Required", JOptionPane.WARNING_MESSAGE);
                    return;
                }

                int maxQuantity;
                try {
                    maxQuantity = Integer.parseInt(inputText);
                } catch (NumberFormatException e) {
                    JOptionPane.showMessageDialog(this, "Please enter a valid integer for maximum quantity.", "Invalid Input", JOptionPane.ERROR_MESSAGE);
                    return;
                }

                if (maxQuantity <= 0) {
                    JOptionPane.showMessageDialog(this, "Max quantity must be a positive integer.", "Invalid Input", JOptionPane.WARNING_MESSAGE);
                    return;
                }

                // Kald optimeringsmetoden
                productMix.optimizeMix(maxQuantity);
                // Opdater UI
                updateTable();
                totalValueLabel.setText(String.format("Total Value (USD): %.2f", productMix.calculateTotalValue()));

            } catch (Exception e) {
                // Generel fejlbehandling
                JOptionPane.showMessageDialog(this, "An error occurred during optimization: " + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            }
        }
Avatar billede erikjacobsen Ekspert
Skrevet i dag kl. 18:03 #7
Det er ikke den kode, der kører. Det kan ikke oversættes.

Prøv at lave om i fejlbeskeden, f.eks.

  JOptionPane.showMessageDialog(this, "7913 Max quantity  ..........

og se om du efterfølgende rent faktisk får beskeden med "7913".
Avatar billede OBS Juniormester
Skrevet for 54 minutter siden #8
Jeg prøvede at lave om i fejlbeskeden: "7913  Max quantity must be a positive integer."  og  efterfølgende  er 7913 ikke med.

( Jeg er endnu ikke helt indforstået med det sprog, der anvendes i  kodeverdenen. Hvad menes med : " Det er ikke den kode, der kører. Det kan ikke oversættes" ? )
Avatar billede erikjacobsen Ekspert
Skrevet for 39 minutter siden #9
Der er syntaksfejl - derfor vil et forsøg på at oversætte det gå galt.

Jeg ved ikke hvordan du afvikler dine Java-programmer. Jeg kender ikke noget til IDE-er (Eclipse, Visual Studio).
Avatar billede OBS Juniormester
Skrevet for 10 minutter siden #10
Jeg bruger følgende:    import javax.swing.SwingUtilities;


public class ProductMixOptimizerWithGUI {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
       
        SwingUtilities.invokeLater(()->{
           
            ProductMixGUI gui=new ProductMixGUI();
            gui.setVisible(true);
           
        });

    }


}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester