Frage

Ich bin die Lösung Schritt Bearbeiten Leitern des UVA auf einer uva Subsite namens programming-challenges.com, aber da ich gar nicht das Format, in dem bekommen habe ich zu Testeingang soll ich nahm ich einfach ihre Probe Eingang, steckte es in eine Textdatei und meinen Code getestet von dort. Wie folgt aus:

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

class Levenshtein {
    private static int minimum(int a, int b, int c) {
        if(a<=b && a<=c)
            return a;
        if(b<=a && b<=c)
            return b;
        return c;
    }

public static int computeLevenshteinDistance(String str1, String str2) {
    return computeLevenshteinDistance(str1.toCharArray(),
                                      str2.toCharArray());
}

private static int computeLevenshteinDistance(char [] str1, char [] str2) {
    int [][]distance = new int[str1.length+1][str2.length+1];

    for(int i=0;i<=str1.length;i++)
            distance[i][0]=i;

    for(int j=0;j<=str2.length;j++)
        distance[0][j]=j;

    for(int i=1;i<=str1.length;i++)
        for(int j=1;j<=str2.length;j++)
            distance[i][j]= minimum(distance[i-1][j]+1,
                                    distance[i][j-1]+1,
                                    distance[i-1][j-1]+
                                    ((str1[i-1]==str2[j-1])?0:1));

    return distance[str1.length][str2.length];
}

public static void main(String args[]){

ArrayList<String> theWords = new ArrayList<String>();

try {

        String ruta="entradaLevenshtein.txt";
        File myFile = new File (ruta);
        FileReader fileReader = new FileReader(myFile);

        BufferedReader reader = new BufferedReader(fileReader);

        String line = null;

        while ((line=reader.readLine())!=null){
            System.out.println(line);
            theWords.add(line);
        }



        reader.close();
    }

    catch (IOException ex){
        ex.printStackTrace();

    }
 {}
 // todo esto sólo para iniciar el arreglo
 // ahora vienen las llamadas a Levenstein y las comparaciones

 int maxEdit=0;
 int actualEdit=0;

 int wordsIndex1 =0, wordsIndex2=0;


 while (wordsIndex1<= theWords.size())
 {
  while (wordsIndex2<= theWords.size()-1){
     actualEdit=computeLevenshteinDistance(theWords.get(wordsIndex1),theWords.get(wordsIndex2));
     if (actualEdit>maxEdit){maxEdit=actualEdit;}
     wordsIndex2++;
  }
 wordsIndex1++;

 }

 System.out.println(maxEdit+1);
}



}

meine Eingabedatei Wesen:

cat
dig
dog
fig
fin
fine
fog
log
wine

ich soll der Code dem folgenden Muster entsprechen machen, was is..I nicht, wo dieses Ding seine String aufzeichnet:

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

class Modelo implements Runnable{
    static String ReadLn(int maxLength){  // utility function to read from stdin,
                                          // Provided by Programming-challenges, edit for style only
        byte line[] = new byte [maxLength];
        int length = 0;
        int input = -1;
        try{
            while (length < maxLength){//Read untill maxlength
                input = System.in.read();
                if ((input < 0) || (input == '\n')) break; //or untill end of line ninput
                line [length++] += input;
            }

            if ((input < 0) && (length == 0)) return null;  // eof
            return new String(line, 0, length);
        }catch (IOException e){
            return null;
        }
    }

    public static void main(String args[]) // entry point from OS
    {
        Modelo myWork = new Modelo();  // Construct the bootloader
        myWork.run();            // execute
    }

    public void run() {
        new myStuff().run();
    }
}
class myStuff implements Runnable{
    public void run(){
        try
        {

        /// PLACE YOUR JAVA CODE HERE




        }catch(Exception e){
            System.out.println("A Exception was generated");
        }
    }

    // You can insert more classes here if you want.
}

Warum sollte ich es platzieren, wo es heißt // platzieren Sie den Code hier und hier nicht ??

 try{
                    while (length < maxLength){//Read untill maxlength
                        input = System.in.read();
                        if ((input < 0) || (input == '\n')) break; //or untill end of line input
                        line [length++] += input;

}

Wie manipuliere ich den Eingang ??

War es hilfreich?

Lösung

Ich denke, hier ist die Idee, Ihr Programm in der myStuff Klasse zu schreiben, wo es in der run() Methode aufgerufen werden. Von der run() Methode können Sie Modelo.ReadLn() benutzen, um Ihre Eingabe zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top