2017-10-13 4 views
-2

Ich habe Probleme mit der Codierung. Ich versuche, ein Programm zu machen, das einen Benutzer auffordert, Höhe und Breite für eine Form einzugeben. Wenn ich bedenke, dass ich eine Java-Klasse nehme, bin ich ein Neuling. Es muss zwei parallele Form von Sternchen geben, kann ein Quadrat oder ein Rechteck sein.Java Hausaufgaben Probleme Sternchen

Danke!

Der Code, den ich bisher habe irgendwie in

import java.util.Scanner; 

public class rectangle { 

    public static void main(String... args) { 
     int recHeight = 0; 
     int recWidth = 0; 
     Scanner input = new Scanner(System.in); 

     do { 
      System.out.print("Enter height [-1 to quit] >> "); 
      recHeight = input.nextInt(); 

      if (recHeight == -1) { 
       System.exit(0); 
      } 

       /* check if number is valid */ 
      if (recHeight < 2 || recHeight > 24) { 
       System.err.println("--Error: please enter a valid number"); 
       continue; // prompt again 

       System.out.print("Enter width [-1 to quit] >> "); 
       recWidth = input.nextInt(); 

       if (recWidth == -1) { 
        System.exit(0); 
       } 

       /* check if number is valid */ 
       if (recWidth < 2 || recWidth > 24) { 
        System.err.println("--Error: please enter a valid number"); 
        continue; // prompt again 
       } 
       for (int col = 0; col < recHeight; col++) { 
        for (int row = 0; row < recWidth; row++) { 
         /* First or last row ? */ 
         if (row == 0 || row == recWidth - 1) { 
          System.out.print("*"); 
          if (row == recWidth - 1) { 
           System.out.println(); // border reached start a new line 
          } 
         } else { /* Last or first column ? */ 
          if (col == recHeight - 1 || col == 0) { 
           System.out.print("*"); 
           if (row == recWidth - 1) { 
            System.out.println(); 
           } 
          } else { 
           System.out.print(" "); 
           if (row == recWidth - 1) { 
            System.out.println(); 
           } 
          } 
         } 
        } 
       } 
      } 

     } while (true); 
    } 
} 
+1

zu töten Was ist Ihr Problem? Welches Ergebnis erwartest du und was bekommst du? –

+0

[Wie funktioniert die Annahme einer Antwort?] (Https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – shmosel

Antwort

1

Ich habe keine Ahnung frankensteined ist, was sie Sie lehren mit dem if und der fortsetzen. Ich denke, du hast eine endlose Schleife mit do while (true) erstellt, weil du sie nie auf false gesetzt hast. Hier ist, wie wir letzte Woche unterrichtet wurden, oder zumindest modifiziert, was Sie brauchen.

import java.io.*; 
import java.util.Scanner; 

public class SquareDisplay 
{ 
    public static void main(String[] args) throws IOException 
    { 
     // scanner creation 
     Scanner stdin = new Scanner(System.in); 
     // get width 
     System.out.print("Enter an integer in the range of 1-24: "); 
     int side = stdin.nextInt(); 
     // check for < 1 or greather then 24 

     while((side < 1) || (side > 24)) 
     { 
      System.out.print("Enter an integer in the range of 1-24: "); 
      // reget the side 
      side = stdin.nextInt(); 
     } 
     // get height 
     System.out.print("Enter an integer in the range of 1-24: "); 
     int height = stdin.nextInt(); 
     // check for < 1 or greather then 24 

     while((height < 1) || (height > 24)) 
     { 
      System.out.print("Enter an integer in the range of 1-24: "); 
      // reget the height 
      height = stdin.nextInt(); 
     } 
     // create rows 
     for(int rows = 0; rows < side; rows++) 
     { 
      // creat cols 
      for(int cols = 0; cols < height; cols++) 
      { 
       System.out.print("X"); 
      } 
     System.out.println(); 
     } 
    } 

} 
+0

Sie sollten 'try-with-resources 'verwenden 'mit dem Scanner, als eine allgemeine gute Praxis – jrtapsell

0

Die folgende tut, was Sie wollen, und deckt auch den Fall, dass sie Eingang eine ungültige Nummer wie example

import java.util.InputMismatchException; 
import java.util.Scanner; 

public class SquareDisplay { 
    public static void main(final String... args) { 
     try (Scanner input = new Scanner(System.in)) { 
      final int columns = getInRange(input, 1, 24); 
      final int rows = getInRange(input, 1, 24); 
      for (int x = 0; x < columns; x++) { 
       for (int y = 0; y < rows; y++) { 
        System.out.print("X"); 
       } 
       System.out.println(); 
      } 
     } 
    } 

    private static int getInRange(final Scanner input, final int min, final int max) { 
     int returnValue = Integer.MIN_VALUE; 
     do { 
      System.out.printf("Please enter a value between %d and %d: ", min, max); 
      try { 
       returnValue = input.nextInt(); 
      } catch (final InputMismatchException ignored) { 
       // Ignore, keep asking 
      } 
      input.nextLine(); 
     } while (returnValue < min || returnValue > max); 
     return returnValue; 
    } 
} 

Optimierungen

  • try-with-resources Mit Ressourcenmanagement
  • zu handhaben Extrahieren des Lesens der Nummer, um die Duplizierung zu reduzieren
  • Behandeln der InputMismatchException, um es zu stoppen, das Programm