【问题标题】:Why exactly is this required in a reverse string program for Java?为什么在 Java 的反向字符串程序中需要这样做?
【发布时间】:2016-12-13 02:23:01
【问题描述】:

我对 Java 比较陌生,我一直在研究 Java 的反向字符串代码。我了解其中的大部分内容,但这部分代码我不明白。在 For 循环中,我需要从整数长度中减去 -1。为什么我需要这样做?没有这个,代码将无法执行,我想知道将来可以更好地理解循环

String start = "";

String end = "";

Scanner input = new Scanner(System.in);

System.out.println("Enter a string");

start = input.nextLine();

int length = start.length();

for(length = length - 1 ; length >= 0 ; length--)

    end = end + start.charAt(length);

System.out.println("This string reversed is " + end);

【问题讨论】:

  • 因为索引经常以0开头。Size = 3,索引为0,1,2。
  • 你在哪里使用length?在charAtcharAt 对其论点施加了哪些限制?
  • 这是可能比您预期的更复杂的问题之一。你打算只处理 Unicode 基本多语言平面,还是要支持代理对?请看stackoverflow.com/questions/7476535/…

标签: java


【解决方案1】:

通常您可以在 Eclipse 上查看Javadoc(如果您正在使用它)以查看有关您的代码的更多信息。 话说,这个字面意思是来自Javadoc

char java.lang.String.charAt(int index)

返回指定索引处的 char 值。索引范围从 0 到 length() - 1。序列的第一个 char 值在索引 0 处, 下一个在索引 1 处,依此类推,对于数组索引。

如果还是不清楚,也许一张图片会有所帮助:

【讨论】:

    【解决方案2】:

    字符串可以是任意长度,但是当访问 .charAt() 您访问的是带有索引的数据结构

    这些适用于在 Java 中以 第一个元素 0 开头的系统,而不是 1。

    例如,如果你想访问字符串中的第一个字母,它应该是 start.charAt(0)。

    如果变量'start'的长度等于n,那么索引必须是n - 1(长度 - 1)才能访问数据结构中相同的对应值/字符。

    如果您不使用长度 - 1,您实际上是访问了一个不存在的字符。假设'start'的长度是8,那么字符只会占用.charAt(0)到.charAt(7)。如果您尝试仅使用长度访问 .charAt(8),则没有数据可以访问,因为它超出了数组限制,因此将无法执行。

    我也将简要介绍一下代码,因为我总是觉得理论对熟悉的上下文很有帮助。我不想光顾,我只是想加强知识。

    start = input.nextLine();
    
    int length = start.length();
    
    for(length = length - 1 ; length >= 0 ; length--)
    
        end = end + start.charAt(length);
    

    在您的代码示例中,您:

    1. 接受一个输入(开始)

    2. 求输入的长度(长度)

    3. 输入一个 for 循环,其中 'length' 减去 1 以获得正确的索引。如果 'length' 大于或等于 0,则减 1(将索引下移 1)。

    4. 然后将数组中索引位置处的字符添加到变量'end'中。

    然后重复此操作以从字符串“start”中获取索引字母并将它们放在新字符串“end”的前面,从而颠倒顺序。

    希望这有帮助!

    【讨论】:

      【解决方案3】:

      字符串,更一般地说,数组,在 C、C++、Java 中是零索引的。字符 1 在位置 0,字符 2 在位置 1,依此类推。

      对于最后一个字符“n”,它位于位置“n-1”。

      【讨论】:

        【解决方案4】:

        长度为 n 的字符串在索引 0 - (n-1) 处有字符,因此初始化。调用那个 var 索引会更合适。

        【讨论】:

          【解决方案5】:

          大多数数据结构都是从“0”而不是“1”开始索引的。 (即第一个元素的索引为“0”)因此,最后一个元素的索引等于元素的数量(即长度)- 1。因此,如果你想从最后一个元素开始,那么你必须从索引length - 1 开始。

          【讨论】:

            【解决方案6】:

            要回答您的问题,让我们回到一些基础知识。

            当我们第一次学习Strings时,我们说明了它每个字母的位置,即Index Position,从0开始直到结束。

            但转折来了。

            当我们使用length() 函数时,它会告诉字符串中的字符总数,因此,它将第一个字母计为1 而不是0,就像Index Position 一样。

            因此,在执行使用string's length value 的循环时,我们将length value 减1,以获得特定字符串的所有字符的正确索引位置。

            例如 -

            我很高兴。

            在这句话中,length10,但Iindex position0,同样,yindex position9

            希望你能理解。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-04-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多