繁体   English   中英

无法解析为变量java 101

[英]cannot be resolved to a variable java 101

用于打印矩阵的新手代码:

import java.util.*;
import java.io.File;
public class Strings {

    public static void main(String[] args){

        Strings String1 = new Strings();

        int alen =0 ,blen =0;
        String a,b;
        int [][] matrix = new int[alen+1][blen+1];


        System.out.println("Enter String a: ");
        Scanner usrip = new Scanner(System.in);
        a = usrip.next();
        System.out.println("Enter String b: ");
        b = usrip.next();
        System.out.println("Execute print method: ");
        String1.printMatrix();

    }//end of main

    public void printMatrix(){

        for(int i=0;i<alen+1;i++)
        {
            for(int j=0;i<blen+1;j++)
            {
                System.out.print(matrix[i][j]);
            }
            }
        }//end of printMatrix


    }// End class

既然alen,blen在类中声明的不是方法,所以我认为它们是全局变量。 但是看起来它不是我想的那样。

我得到的错误是alen cannot be resolved into a variableblenmatrix相同alen cannot be resolved into a variable

当我尝试像String1.alen一样访问它们时,同样的错误。

您在main()中声明的变量“ alen”和“ blen”是局部方法,这意味着它们不能从printMatrix()方法访问。 通过编写以下内容使它们成为字段:

private int alen;
private int blen;

public class Strings {

或按照Christian的建议将它们作为参数传递给printMatrix()方法。

您不能访问alenblenmatrix因为它们没有在printMatrix()范围内声明(您可能想了解Java的范围),这是一个简单的解决方案:

将变量作为参数传递:

public void printMatrix(int alen, int blen, int[][] matrix){
    ...
}

并调用main方法:

String1.printMatrix(alen, blen, matrix);

当然,这不是必须的,您可以这样做:

public void printMatrix(int[][] matrix){
    for(int i=0;i<matrix.length;i++)
    {
        for(int j=0;i<matrix[i].length;j++)
        {
            System.out.print(matrix[i][j]);
        }
    }
}

这有点难看,但是对于初学者来说,您可以执行以下操作:

public class Strings {

    public int [][] matrix;


    public static void main(String[] args){

        Strings String1 = new Strings();

        int alen =0 ,blen =0;
        String a,b;
        String1  = new int[alen+1][blen+1];
        ...

    public void printMatrix(){

        for(int i=0;i<matrix.length;i++)
        {
            for(int j=0;i<matrix[0].length;j++)
            {
                System.out.print(matrix[i][j]);
            }
            }
        }//end of printMatrix


    }// End class

这是许多方法之一:

public void printMatrix(int[][] matrix){
    for(int i=0;i<matrix.length;i++) {
        for(int j=0;i<matrix[i].length;j++) {
            System.out.print(matrix[i][j]);
        }
    }
}//end of printMatrix`enter code here

像这样称呼它:

String1.printMatrix(matrix);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM