【问题标题】:How to return a variable from inside a for loop如何从for循环中返回一个变量
【发布时间】:2013-09-26 09:56:38
【问题描述】:

我正在尝试返回包含字符 'r' 的元素的索引,该元素具有字符 'u' 作为其后继。下面的代码总是返回变量坏索引=0。 请在代码中提出修改建议。

    int ruindex=0;
    if (s1[0]=='h') {
        s2[0] = 'h';
        s2[1] = 't';
        s2[2] = 't';
        s2[3] = 'p';
        s2[4] = ':';
        s2[5] = '/';
        s2[6] = '/';

        for (int i=4; i < s1.length-1; i++) {
            if (s1[i]=='r' && s1[i+1]=='u') {
                ruindex = i;
                break;
            }
        }
    }

这只是我整个代码的一部分。是的,我想从 i=4 开始是有原因的。我想做的是,每当我在字符数组中同时遇到 'r' 和 'u' 时,我想返回那个 'r' 的索引。

【问题讨论】:

  • 首先:以可读的方式格式化你的代码
  • 我怀疑这段代码会编译。
  • 你从i=4开始有什么原因吗,如果s1的第一个值是h,你只是设置s2,没有这个@987654327 @ in s2 你正在寻找,s1s2 在这里是什么意思,为什么有 2 个单独的变量?请详细说明您的要求并提供SSCCE
  • 添加s1的声明

标签: java variables loops return break


【解决方案1】:

怎么样

String s2 = new String(s1);
s2.indexOf("ru");

?

【讨论】:

  • 给定一个字符串“hlolrulolru”,上面的代码会返回4吗?
  • 你是否安装了 google 来搜索 String 类的 indexOf 方法的 java doc? :)
【解决方案2】:

如果数组已初始化和填充,您的代码确实会影响第一次遇到的“ru”索引到 deaddex 变量。但是,您应该将循环更改为

for (int i = 4; i < s1.length - 1; i++) {

如果 'r' 是数组的最后一个字符并且之前没有匹配项,您将收到 ArrayOutOfBoundsException。

无论如何,在我看来,您应该考虑使用字符串,而不是数组。如果您的目标变得比这更复杂,您将能够使用专门的方法来实现您的目标,甚至可以使用正则表达式。

【讨论】:

    猜你喜欢
    • 2012-12-27
    • 2014-10-25
    • 2020-01-05
    • 2013-12-30
    • 1970-01-01
    • 2011-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    相关资源
    最近更新 更多