【问题标题】:How to pass variable values between successive for loops?如何在连续的for循环之间传递变量值?
【发布时间】:2013-02-12 14:03:01
【问题描述】:

我有两个连续的 for 循环,我需要将其中一个变量的值传递给另一个 for 循环内的实例。

for(int x=0; x< sentence.length(); x++)  {

  int i;
  if (!Character.isWhitespace(sentence.charAt(x)))
      i = x ;
      break;    
}

for (int  i  ; i < sentence.length(); i++) {
  if (Character.isWhitespace(sentence.charAt(i)))
     if (!Character.isWhitespace(sentence.charAt(i + 1)))
}

这只是我程序的一部分,我的目的是将 x 的值(来自第一个 for 循环)分配给 i 变量(来自第二个 for 循环),这样我就不会从 0 开始,而是从 x 的值开始(在打破第一个 for 循环之前)...

【问题讨论】:

  • i 在您的第一个循环中是本地的,无法在第二个 for 循环中使其本地访问。为什么不尝试使用全局变量(在第一个 for 循环之外),并在跳出第一个 for 循环之前更新变量的值。然后,您可以在第二个 for 循环中访问相同的值。
  • 为什么不使用array 而不是int,您可以在其中添加第一个循环中的所有值并在第二个循环中使用该数组变量!

标签: java variables for-loop


【解决方案1】:

它看起来像 Java,是吗?

您必须在循环块之外声明“i”变量。顺便说一句,如果“i”不是循环计数器,则为这个变量赋予一个有意义的名称(并且 x 与循环计数器无关),这是一个很好的做法。

另外你可能有一个错误,因为 break 超出了条件表达式块(第一个循环)。

int currentCharPosition = 0; //give a maningful name to your variable (keep i for loop counter)

for(int i=0; i< sentence.length(); i++) {

            if (!Character.isWhitespace(sentence.charAt(x))){  
                currentCharPosition  = x ;
                break;  //put the break in the if block
            }

}

while( currentCharPosition < sentence.length()) {
            ...
            currentCharPosition++;
}

【讨论】:

    【解决方案2】:
    int x;
    for(x = 0; x < sentence.length; x++)
       if(!Character.isWhitespace(sentence.charAt(x)))
          break;
    
    for(int i = x; i < //And so on and so fourth
    

    【讨论】:

      【解决方案3】:

      您需要了解 Java 块作用域:

      像这样在 for 循环之外声明你的变量

      // Declare what you want to access outside here.
      ...
      for(int x = 0; x< sentence.length(); x++)  {
      

      【讨论】:

        【解决方案4】:
        int sentenceLength = sentence.length();
        int[] firstLoopData = new int[sentenceLength -1];
        for(int x=0, index=0; x < sentenceLength; x++)  {
            if (!Character.isWhitespace(sentence.charAt(x))){
                firstLoopData[index] = x;
                index++; 
                break; 
            }   
        }
        
        for(int tempInt: firstLoopData){
            //your code...
        }
        

        【讨论】:

          猜你喜欢
          • 2015-05-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多