2013-08-14 3 views
-2

Программа должна принимать цифры из numberList и вычислять среднее значение и частоту. Я написал свой код ниже. У меня есть основной класс, который я также публикую. Я знаю, что могу использовать массив, но вместо этого хочу попробовать список номеров.Программа не скомпилирована

import java.io.*; 
import java.lang.Math; 
import java.util.*; 
import java.text.DecimalFormat; 


public class intNode { 

double average; 
double deviation; 
int sum = 0; 
int number = 0; 
int newnumber = 0; 
int index; 
double frq; 

//ArrayList<Integer> element = new ArrayList<Integer>(); 
int[] rangeFrequency = new int[10]; 
NumberList numList = new NumberList(51,52,55,57,58,61,62,63,66,66,66,70,72,73,74,75,75,77,77,78,79,81,82,84,86,87,88,91,94,97); 
DecimalFormat fmt = new DecimalFormat("0.000"); 

// Start methods 

    public String intAdd(){ 
     while (numList.hasNextInt()) 
      { 
      element.add(numList.nextInt()); 
      } 
    } 

    public int sum(){ 
     for (int item : element){ 
      sum += item; 
      System.out.println(item); 
     } 
     return sum; 
    } 

    public double avg(){ 
     average = sum/element.size(); 
     return average; 
    } 

    public double deviation(){ 
     for (int i = 0; i < element.size(); i++) 
      { 
      newnumber += Math.pow((element.get(i) - average),2); 
      } 
     deviation = Math.sqrt(newnumber/(element.size())); 

     return deviation; 
    } 

    public String frequency(){ 
    //int[] rangeFrequency = new int[10]; 

     for (int elem: element) { 
      int bucket = elem/10; 
     rangeFrequency[bucket] += 1; 
     } 
    } 

    public String toString() { 
     String result = ""; 

     result += "The average of these grades is : " + fmt.format(average); 
     result += "The standard deviation of these grades is: " + fmt.format(deviation); 
     result += "Grade Range\tFrequency"; 

     for (int i = 0; i < rangeFrequency.length; ++i) { 
      result += (i * 10 + "-" + (i * 10 + 9)); 
     result += ("\t\t" + rangeFrequency[i]); 
     } 
    } 
} 

ГЛАВНЫЙ КЛАСС НИЖЕ.

import java.io.*; 
import java.lang.Math; 
import java.util.*; 
import java.text.DecimalFormat; 


public class gradeSorter{ 

public static void main(String[] args) throws IOException { 
    { 

    intNode good = new intNode(); 

    } 
    } 
} 

Эти ошибки я получаю

----jGRASP exec: javac -g gradeSorter.java 

intNode.java:25: error: cannot find symbol 
     while (numList.hasNextInt()) 
        ^
    symbol: method hasNextInt() 
    location: variable numList of type NumberList 
intNode.java:27: error: cannot find symbol 
      element.add(numList.nextInt()); 
          ^
    symbol: method nextInt() 
    location: variable numList of type NumberList 
intNode.java:27: error: cannot find symbol 
      element.add(numList.nextInt()); 
      ^
    symbol: variable element 
    location: class intNode 
intNode.java:32: error: cannot find symbol 
     for (int item : element){ 
         ^
    symbol: variable element 
    location: class intNode 
intNode.java:40: error: cannot find symbol 
     average = sum/element.size(); 
         ^
    symbol: variable element 
    location: class intNode 
intNode.java:45: error: cannot find symbol 
     for (int i = 0; i < element.size(); i++) 
          ^
    symbol: variable element 
    location: class intNode 
intNode.java:47: error: cannot find symbol 
      newnumber += Math.pow((element.get(i) - average),2); 
           ^
    symbol: variable element 
    location: class intNode 
intNode.java:49: error: cannot find symbol 
     deviation = Math.sqrt(newnumber/(element.size())); 
             ^
    symbol: variable element 
    location: class intNode 
intNode.java:57: error: cannot find symbol 
     for (int elem: element) { 
        ^
    symbol: variable element 
    location: class intNode 
9 errors 

----jGRASP wedge2: exit code for process is 1. 
----jGRASP: operation complete. 
+3

Извините, но ваше кодирование просто беспорядочно. – GGrec

+4

Ваш вопрос неправильный. Ваша программа не запускается вообще. Он не может быть скомпилирован. – AlexR

+0

В чем вопрос? – idfah

ответ

3

Компилятор говорит: "Там нет varable под названием 'элемент'". Ваш код говорит

//ArrayList<Integer> element = new ArrayList<Integer>(); 

Может быть, вы не должны комментировать это.

Кстати, вы должны использовать условные обозначения java. Сначала имена классов в CamelCase заглавными.

0

С некоторой фиксацией, чтобы получить ваши вещи работает так, как вы хотите, вот код, который работает:

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

package com.stackoverflow; 

import java.text.DecimalFormat; 
import java.util.ArrayList; 

public class intNode 
{ 

    double average; 
    double deviation; 
    int sum = 0; 
    int number = 0; 
    int newnumber = 0; 
    int index; 
    double frq; 

    ArrayList<Integer> element = new ArrayList<Integer>(); 
    int[] rangeFrequency = new int[ 10 ]; 
    int[] numList = { 51, 52, 55, 57, 58, 61, 62, 63, 66, 66, 66, 70, 72, 73, 74, 75, 75, 77, 77, 
     78, 79, 81, 82, 84, 86, 87, 88, 91, 94, 97 }; 
    DecimalFormat fmt = new DecimalFormat("0.000"); 

    // Start methods 

    public void intAdd() 
    { 
     for (int num : numList) 
     { 
      element.add(num); 
     } 
    } 

    public int sum() 
    { 
     for (int item : element) 
     { 
      sum += item; 
      System.out.println(item); 
     } 
     return sum; 
    } 

    public double avg() 
    { 
     average = sum()/element.size(); 
     return average; 
    } 

    public double deviation() 
    { 
     for (int i = 0; i < element.size(); i++) 
     { 
      newnumber += Math.pow((element.get(i) - average), 2); 
     } 
     deviation = Math.sqrt(newnumber/(element.size())); 

     return deviation; 
    } 

    public String frequency() 
    { 
     // int[] rangeFrequency = new int[10]; 

     for (int elem : element) 
     { 
      int bucket = elem/10; 
      rangeFrequency[ bucket ] += 1; 
     } 
     // TODO - Fixit. Return correct value. 
     return null; 
    } 

    public String toString() 
    { 
     String result = ""; 

     result += "The average of these grades is : " + fmt.format(average); 
     result += "The standard deviation of these grades is: " + fmt.format(deviation); 
     result += "Grade Range\tFrequency"; 

     for (int i = 0; i < rangeFrequency.length; ++i) 
     { 
      result += (i * 10 + "-" + (i * 10 + 9)); 
      result += ("\t\t" + rangeFrequency[ i ]); 
     } 
     return result; 
    } 
} 
Смежные вопросы