1

您好,我正在创建一个算法来获取 int x 并将其转换为所需的基数,即 int y。示例 7 基数 3 = 21。

void printXBaseY(int x, int y) {

  boolean active = true; 

  while(x >= y) {
      int a = x % y;
      int b = x / y;


      String first = "" + a;
      String second = "" + b;

      String answer = "" + first + second;

  }

  String answer = "" + first + second;

  println(x + " base " + y + " is " + answer);

}

}

在字符串答案它有错误找不到符号 - 首先是变量,谁能解释为什么它找不到它?并提供解决方案。

先感谢您

4

7 回答 7

3

它超出了范围。您在 while 循环中声明了它。之后它就消失了。

为了解决这个问题,在 while 循环开始之前声明 first 和 second 。

于 2013-09-27T07:01:25.413 回答
3

这些变量超出范围。

在 java 中,范围仅限于 {}.

只需将它们移到顶部,以便它们进一步可用。

void printXBaseY(int x, int y) {

          boolean active = true; 
          String first=""; //  or null
          String second=""; // or null 
          while(x >= y) {
              int a = x % y;
              int b = x / y;


               first = "" + a;
               second = "" + b;

              String answer = "" + first + second;

          }

          String answer = "" + first + second;

          System.out.println(x + " base " + y + " is " + answer);

        }

您可能是初学者:阅读有关块和语句的更多信息

于 2013-09-27T07:02:29.087 回答
2

变量“first”的范围由 while 块限定。所以它不能在它之外访问。

于 2013-09-27T07:04:52.090 回答
0

您的第一个和第二个变量在 while 循环中声明。所以它们的范围只在while循环内,你不能在while循环外使用它们。

void printXBaseY(int x, int y) {

  boolean active = true; 
  String first = null;
  String second = null
  while(x >= y) {
      int a = x % y;
      int b = x / y;


      first = "" + a;
      second = "" + b;

      String answer = "" + first + second;

  }

  String answer = "" + first + second;

  println(x + " base " + y + " is " + answer);

}
于 2013-09-27T07:02:46.470 回答
0
 while(x >= y) {
     int a = x % y;
     int b = x / y;


     String first = "" + a;  // here is the problem. You declared first and second within the while loop.
     String second = "" + b;

     String answer = "" + first + second;

 } 

更正代码如下

while(x >= y) {
      int a = x % y;
      int b = x / y;


      String first = "" + a;
      String second = "" + b;

      String answer = "" + first + second;



  String answer = "" + first + second;

  println(x + " base " + y + " is " + answer);

 }
于 2013-09-27T07:03:13.547 回答
0

您的变量first以及second在您的 while 循环中声明,因此它的生命周期被绑定在该循环中。如果您不清楚范围是什么,您应该阅读这张有趣的幻灯片 http://classes.soe.ucsc.edu/cmps012a/Winter03-01/notes/Lecture27-4perpage.pdf

于 2013-09-27T07:05:51.183 回答
0
void printXBaseY(int x, int y) {

  boolean active = true;   
 String first="";    
String second="";   
  String answer="";     

  while(x >= y) {  
      int a = x % y;  
      int b = x / y;  


       first = "" + a;
      second = "" + b;

   //  answer = "" + first + second;

  }

  answer = "" + first + second;

  println(x + " base " + y + " is " + answer);

}
于 2013-09-27T07:06:30.030 回答