java将输入的英文数字翻译成阿拉伯数字,为什么我这个代码不会输出。刚学java,求高手

2025年03月19日 11:57
有2个网友回答
网友(1):

...你想的太复杂了
public static void main(String[] args)
{
//这里有定义成一个数组...这样才方便
String x[]={"zero","one","two", "three","four", "five","six","seven","eight","nine",
"ten","eleven","twelve","thirteen","fourteen","fifteen", "sixteen","seventeen","eighteen","nineteen",
"twenty","thirty","fourty","fifty", "sixty","seventy", "eighty","ninety"
} ;

Scanner in = new Scanner(System.in);
String s;
s = in.next();//这里用 next()方法
int j=0;

for(int i=0 ; i{
if(s==x[0])
{
//这里判断 如果输入的字符串有和你数组里定义的字符串有相同的 就跳出
//需要注意的是数组的索引是从0开始的所以对应的数组要+1
j=i+1;
}
}
System.out.println("你输入的数字是"+j);

}

大概就这样..其实还有更简单的方法 就是使用switch

网友(2):

问题所在...
1. String 是一个object, 所以你不能用 == 去对比
把 s==x[i] 这些都换成s.equals(x[i])

2. a==‘n’ 这个是什么意思? 为什么要有在 a==‘\n’ 才输出? a 是第一个字符, ‘\n’是新一行... 他们怎么可能相等?
所以把,
if(a=='\n')
{
System.out.println(shu);
shu=0;
}

换成 System.out.println(shu); 就行了

===================================================
ps 1. 没有响应同学那个程序是错的
1. s.equals(x[i]) 而不是s==x[0]
2. j=i 不是j=i+1
3. 这方法只能用要20 因为thirty 是30不是21

ps 2. 你这程序还不够完善, 我要是打thirty two 呢?