# Gitter.java /StdIn StdOut



## Learner (21. Jan 2011)

Hallo allerseits,
wir haben ein ähnliches Problem wie JackMoonyM. im StdIn und StdOut...( http://www.java-forum.org/hausaufgaben/112316-stdin-stdout.html ) Thread, bzw. ein weiterführendes. Den Teil der Aufgabe nach dem er fragt haben wir gelöst:

[Java] public class Gitter_a{
  public static void main(String [] args){

    int zeile = StdIn.readInt();
    int spalte = StdIn.readInt();
    int b;

    char [][] matrix = new char [zeile][spalte];

    for (int i = 0; i < matrix.length; i++){
      for (int j = 0; j < matrix_.length; j++){
        b = StdIn.readInt();
        if (b ==1){
          matrix [j] = 'X';
        }
        else 
          if (b == 2){
          matrix [j] = 'Y';
        }
        else{
          matrix [j]= 'O';
        }
      }
    }
    for(int i = 0; i < matrix.length; i++){
      for(int j = 0; j<matrix.length; j++){
        StdOut.print(matrix[j] + " ");
    }
    StdOut.println();
  }
    StdOut.println();

  }
} [/Java]

Jetzt kommt Teil b:

Erweitern Sie Ihr Programm aus Teilaufgabe a) so, dass das Programm die längste Sequenz
von aufeinander folgenden 'X' findet, die horizontal, vertikal oder diagonal auftritt. Das
Programm soll dann diese 'X' in '*' ändern und das so veränderte Array ausgeben.
Beispiel: 
      O O O Y      wird zu       O O O Y
      X Y O Y                       * Y O Y
      O X X Y                       O * X Y
      O O X O                      O O * O_


----------



## Learner (21. Jan 2011)

Falsche Darstellung - Sorry
So siehts besser aus - hoffe ich


> O O O Y
> X Y O Y
> O X X Y
> O O X O
> ...



Wir haben uns bisher folgendes überlegt:

[Java]

      int u =0;
       for (int i = 0; i < matrix.length; i++){
         for (int j = 0; j < matrix_.length; j++){
            int b= 0;
            if (matrix[j] == 'X' ){
             int h = b+j;
             if(h>b)
               b=h;


               StdOut.print(b+ "*"); }

            }}}}
[/Java]
Ist das vom Ansatz her gut?
Der Dr.Java zählt uns dann für die Zeilen schonmal die Anzahl der x in einer Reihe, aber gibt für die letzte Reihe zwei x an, da erden wert aus der vorherigen reihe behält_


----------



## fjord (21. Jan 2011)

Überlegt euch mal aussagekräftigere Variablen. Was sind u, b und h?
Ich würde vorschlagen euren Lösungsansatz mal als Text statt als Code zu beschreiben.
Beantwortet euch erstmal die Frage: Wie findet man die längste Sequenz?


----------



## Learner (21. Jan 2011)

> Wie findet man die längste Sequenz?



Naja, wenn wir das wüssten, müssten wir nicht fragen!


----------



## fjord (21. Jan 2011)

OK.
Du überprüfst für jede Position wie lang die Sequenzen die von der Position aus nach rechts, rechtsunten und unten ausgehen sind und vergleichst das mit der bisher längsten Sequenz.

Jetzt ist die Frage wie du die Längen bestimmt und dir die vorherige Sequenz merkst.


----------



## DeusEx (22. Jan 2011)

Ich habe  eine Frage zu dem ersteren Programm. Ich habe eine ähnliche Aufgabe, in dem ich Stdin und Stdout in einem Programm zusammenführen muss. Beim Kompilieren des Programms gab es einen "Cannot Find Symbol: variable Stdin" und "variable Stdout".
Den Fehler mit dem Stdin konnte ich mit 

```
DataInputStream StdIn = new DataInputStream(System.in);
```
lösen, bei Stdout ist es allerdings nicht so einfach. 
Tippe ich 

```
DataOutputStream Stdout = new DataOutputStream(System.out);
```
ein so gibt es einen "Cannot find Symbol method print (java.lang.String)"
Muss ich ein package oder soetwas hinzufügen? Über Auskunft wäre ich dankbar.


----------



## fjord (22. Jan 2011)

Deine Frage wäre in einem eigenen Thread besser untergebracht.
Um sie beantworten zu können ist das zuwenig Code. Steht bei dem Fehler eine Zeilennummer dabei und falls ja, was steht in der Zeile?


----------



## DeusEx (22. Jan 2011)

danke hat sich bereits erledigt. Anscheindend konnte ich das Programm fehlerlos nur dann ausführen, wenn ich es in einem Ordner kopiert und kompiliert habe. Erst dort konnte es auf Stdin/Stdout zugreifen.


----------

