【问题标题】:'.class' expected error when calling a method with an array [duplicate]使用数组调用方法时出现“.class”预期错误[重复]
【发布时间】:2013-04-06 20:52:02
【问题描述】:

到目前为止,我已经购买了三本书并观看了几个视频,但我仍然不清楚为什么无法编译。任何帮助将不胜感激。我正在尝试读取信用卡号码文件,并根据用户在我的主目录中输入的号码进行检查。这是我的课程,然后是我的主要课程: (感谢您的帮助)

    import java.util.Scanner;
    import java.io.*;

    public class Validator1
    {
        int[] valid;    

    public Validator1()throws IOException
    {   

    }

    public Validator1(String fileName)throws IOException
    {   
        int beginning = 0;
        int place = 0;
        int size = 0;

        File file = new File(fileName);
        Scanner inputFile = new Scanner(file);
        Scanner inputFile2 = new Scanner(file);

        while(inputFile.hasNextInt())
        {
            size++;
            inputFile2.nextInt();
        }


        while(inputFile2.hasNextInt() && place < valid.length)
        {
            valid[place] = inputFile2.nextInt();
            place++;
        }

    }

    public void sort(int[]valid)
    {
        valid = new int[valid.length];
        for(int start = 0; start < valid.length; start++)
        {
            int lowestValue = valid[start];
            int lowestIndex = start;
            for(int i = start + 1; i < valid.length; i++)
            {
                if(valid[i] < lowestValue)
                {
                lowestValue = valid[i];
                lowestIndex = i;
                }
            }
            int temp = valid[start];
            valid[start] = valid[lowestIndex];
            valid[lowestIndex] = temp;
        } 
    }

    public boolean isValid(int[] valid, int number)
    {
        int low =0;
        int high = valid.length-1;
        while(high >= low)
        {
            int middle = (high + low)/2;
            if(valid[middle] == number)
            {
                return true;
            }
            if (valid[middle] < number)
            {
                low = middle +1;
            }
            if(valid[middle] > number)
            {
                high = middle-1;
            }
        }
        return false;
    }
}




import java.util.Scanner;
import java.io.*;

public class ChargeIt1
{
    public static void main(String[] args)
    {
        int accountNumber;
        int[] valid = 0;
        Scanner keyboard = new Scanner(System.in);



        System.out.println("Enter the file name: ");
        String fileName1 = keyboard.nextLine();
        String fileName = fileName1 + ".txt";

        File file = new File(fileName);

        while(!file.exists())
        {
            System.out.println("the file does not exist");
            System.out.println("Enter the file name: ");
            fileName1 = keyboard.nextLine();
            fileName = fileName1 + ".txt";
            file = new File(fileName);

        }
        System.out.println("Enter your charge account number: ");
        accountNumber = keyboard.nextInt();

        //Validator1 val = new Validator1(fileName);
        try
        {
            Validator1 val = new Validator1(fileName);
            if(val.isValid(valid, accountNumber))
                System.out.println("That is a valid account number.");
            else
                System.out.println("That is an INVALID account number.");

        }
        catch(Exception e)
        {
            //System.out.println("An error has occurred.");
            e.printStackTrace();
        }

    }
}

【问题讨论】:

  • 你的构造函数处理一个未初始化的数组。
  • 编译器是怎么说的?你有一些编译器输出吗?
  • 不要用答案提供的解决方案“修复”问题。它使答案变得毫无意义。 StackOverflow 的真正目标是收集有用的问题和答案(针对所提出的问题)......

标签: java


【解决方案1】:

这一行是错误的:

int[] valid = 0;

0 不是数组。

【讨论】:

    【解决方案2】:

    您的问题出在ChargeIt1 类中,这里:

    if(val.isValid(valid[], accountNumber))
        System.out.println("That is a valid account number.");
    else
        System.out.println("That is an INVALID account number.");
    

    val.idValid 方法 (valid[]) 的第一个参数是非法语法。将该行替换为:

    if(val.isValid(valid, accountNumber))
    

    这应该可以解决您的编译器错误。快速注意,这是 IDE 会很快突出显示的内容,我强烈建议您在刚开始编程时使用,尤其是

    【讨论】:

      【解决方案3】:

      您的代码中有许多错误。

      仅解决这一行:

      int[] valid = 0;  // does not compile
      

      您有几个选项可以修复它:

      数组的长度是固定的,要初始化一个数组,必须提供一个维度,例如:

      int[] valid = new int[10];
      

      但是,由于数组是固定的,因此您的代码可以读取比数组空间更多的输入。还有另一种方法 - 使用集合,它会根据需要自动扩展大小。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-12
        • 2014-03-23
        • 2015-10-19
        相关资源
        最近更新 更多