我刚开始学习Java,我一直在学习数组,我正在准备这个关于用"替换空格的程序(来自一本书)(点),我无法理解这条特定的线(即使在我学习的书中也没有提到)。
请帮帮我。
class SpaceRemover{
public static void main(String[] args){
String mostFamous = "Hey there stackoverFLow ";
char [] mf1 = mostFamous.toCharArray();
for(int dex = 0; dex<mf1.length;dex++)
{
char current = mf1[dex]; // What is happening in this line ??
if (current != ' ') {
System.out.print(current);
}
else{
System.out.print('.');
}
}
System.out.println();
}
}
有人请解释一下"char current=mf1[dex];"中发生了什么
非常感谢您抽出时间。
您正在获取字符数组mf1
(因此为mf1[dex]
)中的第dex
个字符/项,并将其存储到局部变量current
中。
基本上,java中的字符串是一个字符数组。因此,上面的代码所做的是将字符串转换为一个字符数组,以便以后可以访问该数组的每个索引。然后,代码进入for循环,以便遍历字符数组的所有索引。
假设您已经清楚了这一点,那么代码现在创建一个char变量,该变量保存数组的当前索引。
char current = mf1[dex];
mf1是表示字符串的char数组。dex是由for循环确定的char的当前索引。因此,通过这样做,我们可以检查char数组的每个字符(字母)。现在,如果字符"current"是一个空格,我们可以用一个点来代替它。
它获取数组mf1
中索引idx
处的字符,并将其值存储在current
变量中。
for循环逐字符迭代字符串mostFamous
。
你要求的是把角色放在特定的位置。函数类似于JavaScript的charAt(i)
char current = mf1[dex];
这一行从mf1
char数组中获取值,并根据dex
分配给current
变量,dex
作为数组元素的索引,它随着循环的运行而递增。
行
char current = mf1[dex];
被放置在for循环中,每次循环迭代时变量dex都会递增。变量dex
是数组的从零开始的索引。在赋值运算符(=)的左侧,您正在声明一个名为current
、类型为char
的变量。在赋值运算符的右侧,如果从零开始计数,则访问CharArray的第dex个字符。赋值运算符将您声明的变量与您在右侧指定的字符值绑定。
例如,第一次运行循环时,dex
将从0开始,因此mf1[dex]
(或mf1[0]
)仅为"H"。
这是解决方案
class SpaceRemover{
public static void main(String[] args){
String mostFamous = "Hey there stackoverFLow ";
char [] mf1 = mostFamous.toCharArray();
// mf1 contains={'H', 'e','y',' ','t','h',.........}
for(char current: mf1)
{
//the for-each loop assigns the value of mf1 variable to the current variable
//At first time the 'H' is assigned to the current and so-on
System.out.print(current==' '?'.':current );
}
System.out.println();
}
}
}
它将索引dex
处的char
数组mf1
的元素分配给char
变量current
。
注意,for循环和该行可以通过使用foreach
语法来简化;这两个代码块是等价的:
// Your code
for(int dex = 0; dex<mf1.length;dex++) {
char current = mf1[dex];
// Equivalent code
for (char current : mf1) {
但更进一步,整个方法可能会被一行取代:
public static void main(String[] args){
System.out.println("Hey there stackoverFLow ".replace(" ", "."));
}
char current = mf1[dex];
这将返回char数组中索引为dex 的char元素
这是数组的基本用法。
祝你学习顺利。
在该语句之后,char [] mf1 = mostFamous.toCharArray();
mf1[0]=H, mf1[1]=e, mf1[1]=y...
所以在这一行,char current = mf1[dex];
因此,在第一次迭代中,current=H
,第二次迭代current=e...