Java 我如何调整此程序以符合在线法官的要求?
我正在一个名为programming-challenges.com的UVA子网站上解决UVA的编辑阶梯问题,但由于我没有获得测试输入的所有格式,我只是简单地获取了他们的示例输入,将其放入文本文件中,并从那里测试了我的代码。像这样:Java 我如何调整此程序以符合在线法官的要求?,java,Java,我正在一个名为programming-challenges.com的UVA子网站上解决UVA的编辑阶梯问题,但由于我没有获得测试输入的所有格式,我只是简单地获取了他们的示例输入,将其放入文本文件中,并从那里测试了我的代码。像这样: import java.io.*; import java.util.*; class Levenshtein { private static int minimum(int a, int b, int c) { if(a<=b &a
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);
}
}
我应该让代码符合以下模式,事情是..我不知道这东西在哪里捕获它的字符串:
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.
}
import java.io.*;
导入java.util.*;
类Modelo实现了Runnable{
静态字符串ReadLn(int maxLength){//从标准输入读取的实用函数,
//由编程挑战提供,仅针对样式进行编辑
字节行[]=新字节[maxLength];
整数长度=0;
int输入=-1;
试一试{
而(长度<最大长度){//Read直到最大长度
输入=System.in.read();
如果((输入<0)| |(输入='\n'))中断;//或直到第ninput行结束
行[长度+++]+=输入;
}
if((输入<0)&&(长度==0))返回null;//eof
返回新字符串(行,0,长度);
}捕获(IOE异常){
返回null;
}
}
publicstaticvoidmain(字符串args[])//来自操作系统的入口点
{
Modelo myWork=newmodelo();//构造引导加载程序
myWork.run();//执行
}
公开募捐{
新建myStuff().run();
}
}
类myStuff实现Runnable{
公开募捐{
尝试
{
///将JAVA代码放在这里
}捕获(例外e){
System.out.println(“生成了异常”);
}
}
//如果需要,可以在此处插入更多类。
}
为什么我要把它放在上面写着//把代码放在这里而不是这里
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;
}
试试看{
而(长度<最大长度){//Read直到最大长度
输入=System.in.read();
如果((输入<0)| |(输入='\n'))中断;//或直到行输入结束
行[长度+++]+=输入;
}
如何操作输入???我认为这里的想法是在
myStuff
类中编写程序,在run()
方法中调用它。从run()
方法中,可以使用Modelo.ReadLn()
来获取输入
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;
}