我正在研究一个USACO问题(骑)我试图将一个大写字母(即'A')转换为它的各自的int(对于'A'它将是1)并且它似乎没有工作。我目前正在做的是:
for(char c1 : st1ch)
{
int charint = (int)c1;
totalcharsum1 = totalcharsum1*charint;
}
..为了将读取string
从文件(我转换为字符数组)转换为int
对应文件。我假设并读取(int)“A”等将是1.但是,我的代码显然没有产生正确的结果。我相信这是问题,因为我看不到其他问题。我找不到这个问题的指南。当然我的错误可能在其他地方,所以不管怎样我会发布我的代码:
import java.io.*;
class ride {
public static void main(String[] arg) throws IOException{
BufferedReader reader = new BufferedReader(new FileReader ("ride.in"));
String st1 = reader.readLine();
String st2 = reader.readLine();
int totalcharsum1 = 1;
int totalcharsum2 = 1;
char[] st1ch = st1.toCharArray();
char[] st2ch = st2.toCharArray();
for(char c1 : st1ch)
{
int charint = (int)c1;
totalcharsum1 = totalcharsum1*charint;
}
for(char c2 : st2ch)
{
int charint = (int)c2;
totalcharsum2 = totalcharsum2*charint;
}
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("ride.out")));
if(totalcharsum1%47 == totalcharsum2%47)
{
out.println("GO");
}else{
out.println("STAY");
}
out.close();
System.exit(0);
}
}
我的问题是你如何将大写字母转换为字母表中的各个int?谢谢,山姆。
答案 0 :(得分:0)
减去他们的ASCII值。
char ch = 'X';
int diff = ch -'A';
答案 1 :(得分:0)
您可以通过减去绝对ASCII值将Java中的char
转换为int
。下面是一个方法,它返回String中每个字符的整数值的乘积(对ride.java
有用):
public static int makeNumber(String name) {
int product = 1;
//iterate through each character in the String name
for (int i = 0; i < name.length(); i++) {
//get the character value
int charVal = (name.charAt(i) - 'A') + 1;
//multiply the product by the character value
product *= charVal;
}
return product;
}
}