2013-12-07 4 views
0

Итак, я очень новичок в java. Я пытаюсь выполнить домашнюю работу для класса, но я застрял. Я продолжаю получать ошибки в своих списках массивов в главном, поэтому он не запускается и не знает, почему и как его исправить. Ошибки говорят: «Синтаксическая ошибка, параметризованные типы доступны только в том случае, если исходный уровень 5.0» и «Тип ArrayList не является общим, его нельзя параметризовать аргументами». Кто-то из моего класса уже предлагал изменить что-то вроде соответствия, которое пыталось, но потом оно начало говорить, что в моем коде не было главного, хотя явно было. Я использую Eclipse на нашем сервере citrix. Надеюсь, вы, ребята, можете помочь мне решить проблему, чтобы я мог запустить код. Пожалуйста, помогите мне. Сайт не позволит мне опубликовать скриншот ошибки, но это на этих линиях ....Ошибка программы ошибок ArrayList

ArrayList<Double>priceList = new ArrayList<Double>(); 
ArrayList<Double> quantityList = new ArrayList<Double>(); 
ArrayList<Double> amountList = new ArrayList<Double>(); 

это описание программы .....

Написать программу под названием ThreeArrayLists.java который объявляет три объекта ArrayList, на которые ссылаются объекты с именем priceList, quantityList и amountList. Каждый ArrayList должен быть объявлен inmain() и должен иметь возможность содержать не менее 10 чисел с двойной точностью. Номера, которые должны храниться в прайс-листе, составляют 10,62, 14,89, 13,21, 16,55, 18,62, 9,47, 6,58, 18,32, 12,15, 3,98. Цифры, которые должны храниться в количественном списке, равны 4, 8,5, 6, 7,35, 9,15,3, 3, 5,4, 2,9 4,8. Ваша программа должна передать объектные ссылки на эти три объекта ArrayList на метод с именем extend(), который должен вычислять элементы в размереListArrayList как произведение соответствующих элементов в списке priceList и quantityListArrayList, например, amountList.add (priceList. get (i) * quantityList.get (i)). Afterextend() поместил значения в объект amountListArrayList, создайте метод, который отображает результаты всех трех списков. Для получения отформатированного вывода необходимо использовать соответствующие методы форматирования.

... и ниже - полный код.

package week6; 

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

public class ThreeArrayLists extends javax.swing.JFrame { 
static String result; 

public ThreeArrayLists() { 
    initComponents(); 
} 

private void initComponents() { 

    jLabel1 = new javax.swing.JLabel(); 
    jLabel2 = new javax.swing.JLabel(); 
    ProceTextField = new javax.swing.JTextField(); 
    jLabel3 = new javax.swing.JLabel(); 
    QuantityTextField = new javax.swing.JTextField(); 
    CalculateButton = new javax.swing.JButton(); 
    jLabel4 = new javax.swing.JLabel(); 
    jScrollPane1 = new javax.swing.JScrollPane(); 
    ResultTextArea = new javax.swing.JTextArea(); 

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 
    setTitle("ThreeArrayLists"); 

    jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); 
    jLabel1.setText("ThreeArrayLists"); 

    jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); 
    jLabel2.setText("priceList:"); 

    ProceTextField.setEditable(false); 
    ProceTextField.setText("{ 10.62, 14.89, 13.21, 16.55, 18.62, 9.47, 6.58, 18.32, 12.15, 3.98 }"); 

    jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); 
    jLabel3.setText("quantityList:"); 

    QuantityTextField.setEditable(false); 
    QuantityTextField.setText("{ 10.62, 14.89, 13.21, 16.55, 18.62, 9.47, 6.58, 18.32, 12.15, 3.98 }"); 

    CalculateButton.setText("Calculate"); 
    CalculateButton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      CalculateButtonActionPerformed(evt); 
     } 
    }); 

    jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12)); 
    jLabel4.setText("amountList:"); 

    ResultTextArea.setColumns(20); 
    ResultTextArea.setRows(5); 
    jScrollPane1.setViewportView(ResultTextArea); 

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addGap(26, 26, 26) 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addGroup(layout.createSequentialGroup() 
        .addGap(78, 78, 78) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
         .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 361, Short.MAX_VALUE) 
         .addGroup(layout.createSequentialGroup() 
          .addComponent(jLabel4) 
          .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 287, Short.MAX_VALUE)))) 
       .addGroup(layout.createSequentialGroup() 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
         .addComponent(jLabel3) 
         .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
         .addComponent(QuantityTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addComponent(ProceTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 9, Short.MAX_VALUE))) 
      .addGap(46, 46, 46)) 
     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() 
      .addContainerGap(235, Short.MAX_VALUE) 
      .addComponent(CalculateButton) 
      .addGap(199, 199, 199)) 
     .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() 
      .addContainerGap(208, Short.MAX_VALUE) 
      .addComponent(jLabel1) 
      .addGap(194, 194, 194)) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
      .addContainerGap() 
      .addComponent(jLabel1) 
      .addGap(26, 26, 26) 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
       .addComponent(jLabel2) 
       .addComponent(ProceTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
      .addGap(30, 30, 30) 
      .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
       .addComponent(jLabel3) 
       .addComponent(QuantityTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
      .addGap(32, 32, 32) 
      .addComponent(CalculateButton) 
      .addGap(21, 21, 21) 
      .addComponent(jLabel4) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 195, Short.MAX_VALUE) 
      .addContainerGap()) 
    ); 

    pack(); 
} 

private void CalculateButtonActionPerformed(java.awt.event.ActionEvent evt) { 
    ResultTextArea.setText(result); 
} 

public static void main(String args[]) { 
DecimalFormat df = new DecimalFormat("###,###.00"); 
double[] PRICE_ARRAY = { 10.62, 14.89, 13.21, 16.55, 18.62, 9.47, 6.58, 18.32, 12.15, 3.98 }; 
double[] QUANTITY_ARRAY = { 4.0, 8.5, 6.0, 7.35, 9.0, 15.3, 3.0, 5.4, 2.9, 4.8 }; 
ArrayList<Double>priceList = new ArrayList<Double>(); 
ArrayList<Double> quantityList = new ArrayList<Double>(); 
ArrayList<Double> amountList = new ArrayList<Double>(); 

for (int i=0; i < 10; i++){ 
    priceList.add(new Double(PRICE_ARRAY[i])); 
    quantityList.add(new Double(QUANTITY_ARRAY[i])); 
} 

result = ""; 
for (int i = 0; i < 10; i++) { 
    amountList.add((Double.valueOf(priceList.get(i).toString())) * (Double.valueOf(quantityList.get(i).toString()))); 
    result += String.valueOf(i+1) + ") " 
      + new String(df.format(priceList.get(i))) + " * " 
      + new String(df.format(quantityList.get(i))) + " = " 
      + new String(df.format(amountList.get(i))) + "\n"; 
} 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new ThreeArrayLists().setVisible(true); 
     } 
    }); 
} 

private javax.swing.JButton CalculateButton; 
private javax.swing.JTextField ProceTextField; 
private javax.swing.JTextField QuantityTextField; 
private javax.swing.JTextArea ResultTextArea; 
private javax.swing.JLabel jLabel1; 
private javax.swing.JLabel jLabel2; 
private javax.swing.JLabel jLabel3; 
private javax.swing.JLabel jLabel4; 
private javax.swing.JScrollPane jScrollPane1; 

}

+0

Какая версия JDK и JRE версии вы используете? Возможно, существует несоответствие некоторого типа. –

+0

Взгляните на этот ответ: http://stackoverflow.com/questions/2419226/eclipse-syntax-error-parameterized-types-are-only-if-source-level-is-1-5 –

ответ

1

Он смотрит на меня, как JDK вы используете, могут быть ниже версии 1.5, Дженерики не были введены до Java 5.

Вы не могли бы попытаться объявить списки следующим образом:

ArrayList priceList = new ArrayList(); 

Тогда вы должны помнить, чтобы бросить в Double при обращении элементов, если вы хотите, чтобы манипулировать данные в дальнейшем.

0

Java с версией ниже 1.5 не обрабатывает общие типы (ака типов параметризованных других типов: List).

Для запуска вашего кода в Java 1.4 вам нужно освободить параметр родового типа и сделать сами броски. Bellow - это способ достижения чего-то подобного вашей цели.

Пример:

import java.util.ArrayList; 

public class test { 
    String result; 


    double[] PRICE_ARRAY = { 10.62, 14.89, 13.21, 16.55, 18.62, 9.47, 6.58, 18.32, 12.15, 3.98 }; 
    double[] QUANTITY_ARRAY = { 4.0, 8.5, 6.0, 7.35, 9.0, 15.3, 3.0, 5.4, 2.9, 4.8 }; 
    ArrayList priceList = new ArrayList(); 
    ArrayList quantityList = new ArrayList(); 
    ArrayList amountList = new ArrayList(); 
    public void homework(){ 

     for (int i=0; i < 10; i++){ 
      this.priceList.add((Double)(PRICE_ARRAY[i])); 
      this.quantityList.add((Double)(QUANTITY_ARRAY[i])); 
      this.amountList.add((Double)priceList.get(i) * (Double)quantityList.get(i)); 
     } 

    } 
    public void output(){ 
     System.out.println("Price list: " + priceList.toString()); 
     System.out.println("Quantity list: " + quantityList.toString()); 
     System.out.println("Amount list: " + amountList.toString()); 
    } 
} 
+0

Хорошо попробовал это сделать таким образом, но у меня были разные ошибки.Таким образом, часть ArrayList woks, но затем я получаю ошибки на «этом» высказывании «не может использовать это в статическом контексте», а в конце этих строк для «Double» ошибок, говорящих «не может быть выбрано из double to Double». – namiko

+0

Я пробовал этот код, и это сработало для меня. Что касается ошибки при использовании «this» - «this» относится к членам экземпляра, а статический метод будет иметь доступ только к статическим переменным. Какая строка делает ошибку, говоря, что не может отбрасывать от двойного до двойного? Вы можете попробовать разобрать примитивный двойной объект Double, пожалуйста, обратитесь к этому веб-сайту: http://www.java-examples.com/convert-java-double-double-object-example –

Смежные вопросы