这是我的代码
import java.util.*;
import java.io.*;
public class palsquare {
public static void main(String[] args) throws IOException{
//File file = new File("palsquare.in");
//Scanner scanner = new Scanner(file);
BufferedReader in = new BufferedReader(new FileReader("palsquare.in"));
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("palsquare.out")));
StringTokenizer st = new StringTokenizer(in.readLine());
int base = Integer.parseInt(st.nextToken());
for(int i = 1; i < 300; i++){
String e = Integer.toString(i * i);
String t = convertFromBaseToBase(e, 10, base);
if(t.equals(revStr(t))){
out.println(i + " " + t);
}
}
}
public static String convertFromBaseToBase(String str, int fromBase, int toBase) {
return Integer.toString(Integer.parseInt(str, fromBase), toBase);
}
public static String revStr(String str){
String revStr = "";
for(int i = str.length() - 1; i >= 0; i--)
{
revStr = revStr + str.charAt(i);
}
return revStr;
}
}
我对为什么我的代码无法正常工作感到困惑。 USACO的培训师对我的呈件作了回应,说它返回了一个空白文件,但是在我的计算机上,使用扫描仪时它可以工作,我不知道如何在计算机上使用它。我只有12岁,还在学习。预先谢谢你。
答案 0 :(得分:0)
这里的问题是没有flush()
操作将内容推送到文件。可以使用.flush()
或.close()
来完成。使用漂亮的Closeable
界面,您可以(并且允许捕获异常):
try (BufferedReader in = new BufferedReader(new FileReader("palsquare.in"));
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("palsquare.out")))) {
StringTokenizer st = new StringTokenizer(in.readLine());
int base = Integer.parseInt(st.nextToken());
for (int i = 1; i < 300; i++) {
String e = Integer.toString(i * i);
String t = convertFromBaseToBase(e, 10, base);
if (t.equals(revStr(t))) {
out.println(i + " " + t);
}
}
} catch (IOException e) {
e.printStackTrace();
}
这将自动关闭输入/输出流,并在输出的流上调用flush()