我收到错误,有什么建议吗?

时间:2014-10-21 01:57:54

标签: java

编译这个java程序时,我得到的错误就是找不到符号......有什么建议吗?

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

public class joel001
{
    public int d;


// find the smallest number of an array
public static int small(int a[])  
{

    int smallest=0;
    for(int i=0;i<a.length();i++)
    {
        if(a[i]<smallest)
        {
            smallest=a[i];
        }
    }
    return smallest;
}

// subtract the smallest number of an array from all its elements
public static int[] sub(int a[],int d)
{
    this.d=d;
    for(int i=0;i<a.length();i++)
    {    
        a[i]=a[i]-d;
    }
    return a;
}

// count the array's non zero elements
public static int count(int a[])
{
    int countn=0;
        for(int i=0;i<a.length();i++)
        {
            if(a[i]!=0)
            {   
            countn=countn+1;
            }   
        }
    return countn;
}

public static void main(String args[])
{
    int b,c,z,k=1;
    int a[]=new int[1000];

    Scanner s=new Scanner(System.in);   
    b=s.nextInt();           //input
    for(i=0;i<b;i++)
    {
        a[i]=s.nextInt();
    }
    while(k==1)
    {
        z=count(a);
        if(z==0)
        {
            break;
        }
    System.out.println(z);
    c=small(a);
    a=sub(a,c);
    }
}
}

2 个答案:

答案 0 :(得分:2)

首先,数组的长度为arr.length不是 arr.length()

其次,在sub()中, 没有this,因为它是一个静态函数。

第三,在main()中,您需要在尝试使用之前声明i

这将解决您的所有编译时错误。运行时或逻辑错误是您需要学习在调试器中修复的内容。

答案 1 :(得分:0)

您将joel001的所有方法声明为静态。静态方法与joel001类的实例或对象无关。在继续之前,你需要研究OOP。

尝试这样的事情:

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

public class joel001
{
    public int d;


// find the smallest number of an array
public int small(int a[])
{

    int smallest=0;
    for(int i=0;i<a.length();i++)
    {
        if(a[i]<smallest)
        {
            smallest=a[i];
        }
    }
    return smallest;
}

// subtract the smallest number of an array from all its elements
public int[] sub(int a[],int d)
{
    this.d=d;
    for(int i=0;i<a.length();i++)
    {    
        a[i]=a[i]-d;
    }
    return a;
}

// count the array's non zero elements
public int count(int a[])
{
    int countn=0;
        for(int i=0;i<a.length();i++)
        {
            if(a[i]!=0)
            {   
            countn=countn+1;
            }   
        }
    return countn;
}

public void main2() {
    int b,c,z,k=1;
    int a[]=new int[1000];

    Scanner s=new Scanner(System.in);   
    b=s.nextInt();           //input
    for(int i=0;i<b;i++)
    {
        a[i]=s.nextInt();
    }
    while(k==1)
    {
        z=count(a);
        if(z==0)
        {
            break;
        }
    System.out.println(z);
    c=small(a);
    a=sub(a,c);
    }
}

public static void main(String args[])
{
  joel001 obj = new joel001();
  obj.main2();
}
}