Очередь не принимает параметры в java - PullRequest
0 голосов
/ 30 апреля 2020

У меня проблема с кодом, я не могу добавить очередь

Когда я пытался добавить этот код

Queue<Integer> myqu = new LinkedList<>(); 
    for (int i = 0; i <= mySecondArray.length + 1; i++){
    myqu.add(mySecondArray[i]);
}

К этому коду

import java.util.LinkedList; 
import java.util.Queue; 
import java.util.*; 

class test{

static class Queue{  

    static Stack<Integer> s1 = new Stack<Integer>();  
Queue<Integer> myqu = new LinkedList<>(); 


    static int[] intArray = new int[]{ 1,2,3,4,5,6,7,8,9,10 }; 
    static int[] mySecondArray = new int[10];               

    static void enQueue(){

        for (int i = 0; i < intArray.length; i++){
             s1.push(intArray[i]);  
        }
        System.out.printf("\nBefore multiply operation\n");
        System.out.printf("%s \n",s1);

        System.out.printf("\nAfter multiply operation\n");
        Integer edit = s1.pop();
        System.out.printf("[");
        for (int i = 1; i <= s1.size() + 1; i++){
            mySecondArray[i] = i * 2;
            edit = Integer.valueOf(i) * 2;  
            System.out.printf("%s",edit);   
            System.out.printf(", ");            
        }
        System.out.printf("]");     

    for (int i = 0; i <= mySecondArray.length + 1; i++){
    myqu.add(mySecondArray[i]);
}
    }  

};  

public static void main(String[] args)  
{  
    Queue q = new Queue();  
    q.enQueue();  
}  
} 

Там написано "ошибка: тип Queue не принимает параметры Queue myqu = new LinkedList ();"

Не могли бы вы исправить код, пожалуйста

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Если вы пытаетесь использовать java .util.Queue, почему вы создаете свой собственный внутренний класс stati c с именем Queue? Переименуйте свой класс Queue, и он также объявлен как stati c, так что вы не можете создать его экземпляр с помощью new Кроме того, вы myqu не объявлены как stati c, так что вам также нужно это исправить, я переименовал его myQueue в приведенном ниже коде согласно соглашениям об именах

public class test {

    static class QueueUtil {

        static Stack<Integer> s1   = new Stack<Integer>();
        static Queue<Integer> myQueue = new LinkedList<>();


        static int[] intArray      = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        static int[] mySecondArray = new int[10];

        static void enQueue() {

            for (int value : intArray) {
                s1.push(value);
            }
            System.out.print("\nBefore multiply operation\n");
            System.out.printf("%s \n", s1);

            System.out.print("\nAfter multiply operation\n");
            Integer edit = s1.pop();
            System.out.print("[");
            for (int i = 1; i <= s1.size() + 1; i++) {
                mySecondArray[i] = i * 2;
                edit             = i * 2;
                System.out.printf("%s", edit);
                System.out.print(", ");
            }
            System.out.print("]");

            for (int i = 0; i <= mySecondArray.length + 1; i++) {
                myQueue.add(mySecondArray[i]);
            }
        }
    }

    public static void main(String[] args) {
        QueueUtil.enQueue();
    }
}

Этот код должен исправить вашу проблему, о которой вы спрашивали, но я думаю, что вы не получите ожидаемых результатов ... Я рекомендую читая о том, как, когда и зачем использовать stati c, здесь есть много отличных постов.

0 голосов
/ 30 апреля 2020

Вы вызываете эту проблему, потому что ваше имя класса и интерфейс Queue имя совпадают.

Измените имя класса, и эта проблема будет решена следующим образом:

static class SampleQueue{
  ..your code

}

И измените свой Основной метод для нового имени:

public static void main(String[] args)  
{  
    SampleQueue q = new SampleQueue();  
    q.enQueue();  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...