2014-10-21 6 views
-2

При компиляции этой 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); 
    } 
} 
} 
+1

Только то, что символы не претендует, чтобы не быть в состоянии найти? Вы подтвердили, что вы их определили? –

+0

вы также не должны ссылаться на нестатическую переменную d в статическом int [] sub, между прочим. –

+0

Я рекомендую вам использовать IDE - он должен показать вам фактическое местоположение ваших ошибок. – stuXnet

ответ

2

Для начала, длина массива составляет arr.length, неarr.length().

Во-вторых, в sub(), там не нет this, потому что это статическая функция.

В-третьих, в main(), прежде чем пытаться его использовать, необходимо указать i.

Это будет позаботиться обо всех ваших ошибках . Ошибки времени выполнения или логики - это то, что вам нужно, чтобы научиться исправлять в отладчике.

+0

спасибо большое человек @paxdiablo –

0

Вы объявляете все свои методы joel001 статическими. Статические методы не связаны с экземпляром или объектом класса joel001. Вам нужно исследовать ООП, прежде чем продолжить.

попробовать что-то вроде этого:

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(); 
} 
} 
+0

Хороший первый практический шаг: удаление 'static', но рекомендация« OOP reaearch »кажется мне излишней, вероятно, достаточно« прочитать учебники для начинающих Java ». – Wolf