我在USACO培训页面遇到第一个问题时遇到了问题。
任务是要求ride.in
文件中的两个字符串,将字符串转换为字母的乘积(其中a = 1,b = 2,z = 26),然后查看是否数字的剩余部分= 47(如果是,打印" GO"如果没有,请打印"保留"在ride.out
上)。
我不知道为什么我无法在ride.out
打印输出。
我写的代码是:
package ashish.usaco.com;
import java.io.*;
import java.util.*;
class ride {
public static void main(String[] args) throws IOException {
try {
BufferedReader input = new BufferedReader(new FileReader("ride.in"));
// input file name goes above
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("ride.out")));
// Use StringTokenizer vs. readLine/split -- lots faster
StringTokenizer st = new StringTokenizer(input.readLine());
if (toNumber(st.nextToken()) % 47 == toNumber(st.nextToken()) % 47) {
out.println("GO");
} else {
out.println("STAY");
}
out.close();
input.close();
System.exit(0);
} catch(NoSuchElementException e) {
System.out.println("File not Found");
} catch(IOException e) {
System.out.println("File not Found");
}
}
public static int toNumber (String name) {
int pdtvalue =1, charvalue =1;
for(int i=0; i<name.length();i++)
{
charvalue = (name.charAt(i) - 'A')+1;
pdtvalue*= charvalue;
}
return pdtvalue;
}
}
答案 0 :(得分:1)
感谢大家的帮助..
特别感谢alobodkz ..你真的告诉了正确的部分。我的ride.java程序找不到ride.in文件,因为它不在正确的目录中..我删除了包含代码的整个包,并写了一个新的ride.java类文件,这次没有 包装声明..
答案 1 :(得分:0)
在此声明中:
if (toNumber(st.nextToken()) % 47 == toNumber(st.nextToken()) % 47)
您不会检查数字提醒是否等于47。 您正在检查两个数字%(模运算符)47的提醒是否彼此相等。
因此,例如,如果第一个令牌== 47,第二个令牌== 94 - &gt;你的情况是正确的,所以它与你在问题描述中所呈现的完全不同。