为什么我不能在for循环中设置一个等于另一个整数的整数?

时间:2017-11-04 01:29:47

标签: java for-loop integer

我目前的代码如下,其功能说明如下:

import java.util.Scanner;
class Main
{

    public static void main(String[] args) 
    {
    Scanner Kb = new Scanner(System.in);
    int spacesLn = 0;
    int numSaver = 0;
    int numAst;

    System.out.println("Enter The Number of Asterics You Would Like To Create");
    numAst = Kb.nextInt();


    for(int Spaces = 0; Spaces <= numAst; Spaces++)
    {
        while(spacesLn < 0)
        {
            System.out.print(" ");
            spacesLn++;

        }
        numSaver--;
        spacesLn = numSaver;
        System.out.print("*");
        System.out.println("");
    }   
  }
}

这个程序要求一个数字,然后按以下方式将星号的对角线等于该数字:第一行 - 零空格,后跟一个星号,第二行 - 一个空格,后面跟一个星号等。严格地说说到代码的功能与我的问题有点无关,但无论如何它都存在。它完美地运作。尽管如此,我还是决定将for循环嵌套在for循环中,并将其转换为for循环。我将包含循环的代码更改为如下,并删除了变量spacesLn的声明。

for(int Spaces = 0; Spaces <= numAst; Spaces++)
    {
        for(int spacesLn = 0; spacesLn < 0; spacesLn++)
        {
            System.out.print(" ");
        }
        numSaver--;
        spacesLn = numSaver;
        System.out.print("*");
        System.out.println("");

    }

现在,当我运行它时,它给了我这个错误:

Main.java:21: error: cannot find symbol
            spacesLn = numSaver;
            ^
  symbol:   variable spacesLn
  location: class Main
1 error

exit status 1

我对这个错误非常困惑,我似乎无法弄清楚我做错了什么。虽然我可以认为我的错误将不可避免地让我感到愚蠢但我觉得我已经点缀了我的&#34;我已经越过了我的&#34; t&#34; s。

如果有人能帮助我理解我的错误,我将非常感激。非常感谢,Max。

3 个答案:

答案 0 :(得分:3)

在for循环终止后,您的变量int spacesLn; for(spacesLn = 0; spacesLn < 0; spacesLn++) { System.out.print(" "); } numSaver--; spacesLn = numSaver; 超出了范围。

如果您想在之后使用它,请在for循环之前声明它。

// old way
function Test1() {
  this.books = ['t1']
}

var t1 = new Test1()

alert(t1.books)


//es6 class
class T2 {
  constructor() {
    this.books = ['t2']
  }
}

var t2 = new T2()
alert(t2.books)

// plain object
var t3 = {
  books: ['t3']
}
alert(t3.books)

// static field 
function T4() {}
T4.prototype.books = []

var t4a = new T4(),
  t4b = new T4()
t4a.books.push('t4')
alert(t4b.books)

答案 1 :(得分:0)

&#34;我删除了变量spacesLn的声明。&#34;

你需要声明变量,这就是它找不到符号的原因。您在for循环中将它用作迭代器,但这使它仅在for循环中可用。当它到达

spacesLn=numSaver;

spacesLn不再存在。

另外仔细看看

for(int spacesLn = 0; spacesLn < 0; spacesLn++)

你说它从零到零不到......所以基本上没有。

答案 2 :(得分:0)

在java方法或循环变量之外无法访问,你在for循环中声明了int spacesLn = 0

  

在这种情况下,您只能在for循环内访问spacesLn。

如果你想在for循环中使用那些spacesLn,就像你在while循环示例中所做的那样将它声明为类变量。

import java.util.Scanner;

班主 {

public static void main(String[] args) 
{
Scanner Kb = new Scanner(System.in);
int spacesLn = 0;
int numSaver = 0;
int numAst;

System.out.println("Enter The Number of Asterics You Would Like To Create");
numAst = Kb.nextInt();


for(int Spaces = 0; Spaces <= numAst; Spaces++)
{
   for(spacesLn ; spacesLn < 0; spacesLn++) {
      System.out.print(" ");
    }

    numSaver--;
    spacesLn = numSaver;
    System.out.print("*");
    System.out.println("");
 }
 }
}`