1

我刚刚开始学习 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];”中发生了什么

非常感谢您的时间。

4

10 回答 10

2

您正在获取dex字符数组中的第 th 个字符/项目mf1(因此mf1[dex])并将其存储到局部变量current中。

于 2013-06-24T03:26:28.750 回答
1

基本上java中的String是一个字符数组。所以上面的代码所做的就是将字符串转换为一个字符数组,以便以后可以访问数组的每个索引。然后代码进入一个 for 循环,以遍历 char 数组的所有索引。

假设您已经清楚这一点,代码现在创建一个 char 变量来保存数组的当前索引。

char current = mf1[dex];

mf1 是代表字符串的 char 数组。dex 是由 for 循环确定的 char 的当前索引。因此,通过这样做,我们可以检查 char 数组的每个字符(字母)。现在,如果字符“当前”是一个空格,我们可以用一个点替换它。

于 2013-06-24T06:56:16.253 回答
0

线

char current = mf1[dex];

被放置在一个 for 循环中,每次循环迭代时变量 dex 都会递增。该变量dex是数组的从零开始的索引。在赋值运算符 (=) 的左侧,您声明了一个名为currenttype的变量char。如果您从零开始计数,则在赋值运算符的右侧,您正在访问 CharArray 的第 dex 个字符。赋值运算符将您声明的变量与您在右侧指定的字符的值绑定。

例如,第一次运行循环时,dex将从 0 开始,因此mf1[dex](or mf1[0]) 只是“H”。

于 2013-06-24T04:19:54.300 回答
0

它将索引处的char数组元素分配给变量。mf1dexcharcurrent

请注意,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(" ", "."));
}
于 2013-06-24T04:40:02.570 回答
0
char current = mf1[dex]; 

此行从mf1char 数组中获取值并根据 分配给current变量dexdex用作数组元素的索引,并随着运行循环递增。

于 2013-06-24T04:05:49.157 回答
0
char current = mf1[dex]; 

这将返回 char 数组中索引为 dex 的 char 元素

这是数组的基本用法。

祝你学习顺利。

于 2013-06-24T05:17:59.483 回答
0

它获取idx数组中索引处的字符mf1并将其值存储在current变量中。

于 2013-06-24T03:25:50.653 回答
0

for 循环正在mostFamous逐个字符地迭代字符串。

您要问的行是让角色处于特定位置。函数类似于 JavaScript 的charAt(i)

于 2013-06-24T03:26:04.013 回答
0

在此声明之后,char [] mf1 = mostFamous.toCharArray();

mf1[0]=H, mf1[1]=e, mf1[1]=y...

所以在这一行,char current = mf1[dex]; 所以,在第一次迭代中current=H,第二次迭代current=e...

于 2013-06-24T03:28:30.300 回答
0

这是解决方案

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();



            }

        }
    }
于 2013-06-24T04:25:47.047 回答