import java.util.Scanner;
public class lian1 {
public int Find(String str)
{
char[] strArr = str.toCharArray();
int exp = 0;
int sum = 0;
for (int i = strArr.length - 1; i >= 0; i--)
{
int num = strArr[i] - 'A' + 1;
sum += num * ((int) Math.pow(26, exp));
exp++;
}
return sum;
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
while (sc.hasNext())
{
String str = sc.nextLine();
lian1 find = new lian1();
System.out.println(find.Find(str));
}
}
}
帮忙讲解一下每行代码啥意思
你哪里不明白,具体如下:
import java.util.Scanner; //导入标准输入流
public class lian1 { //声明一个类,类名叫lian1
public int Find(String str) //Find是类的成员函数,有一个String类型的参数
{
char[] strArr = str.toCharArray();//把String转成 char数组
int exp = 0;
int sum = 0;
for (int i = strArr.length - 1; i >= 0; i--) //从字符串末尾开始倒序遍历
{
int num = strArr[i] - 'A' + 1; //计算每个字符跟'A'之间的ASCII码差值+1
sum += num * ((int)Math.pow(26, exp)); //pow(26,exp)计算 26的exp次方,跟num相乘后累加到sum
exp++; //exp自增1
}
return sum; //返回累加和
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in); //声明一个标准输入对象
while (sc.hasNext()) //判断是否还有输入数据
{
String str = sc.nextLine(); //从键盘读取一行字符串
lian1 find = new lian1(); //创建一个lian1类的实例
System.out.println(find.Find(str)); //调用lian1类的Find方法,并显示累加和
}
}
}
import java.util.Scanner; //引入一个包
public class lian1 { //定义一个类
public int Find(String str) //定义函数
{
char[] strArr = str.toCharArray(); //把字符串分解成char数组
int exp = 0;
int sum = 0;
for (int i = strArr.length - 1; i >= 0; i--) //逆向循环
{
int num = strArr[i] - 'A' + 1; //减去字母A,再+1,把26个字母翻译成数字
sum += num * ((int) Math.pow(26, exp)); //数字乘以26的exp次方,变成一个26进制数
exp++;
}
return sum;
}
public static void main(String[] args) //主函数
{
Scanner sc = new Scanner(System.in); //标准输入
while (sc.hasNext()) //如果有输入,一直循环
{
String str = sc.nextLine(); //读取一行
lian1 find = new lian1(); //实例化
System.out.println(find.Find(str)); //调用函数,输出结果
}
}
}