Java 通过用户输入在数组中添加和排序元素

Java 通过用户输入在数组中添加和排序元素,java,Java,我的程序在第一个元素进入数组后停止。你能帮我吗?代码如下: 对不起 我已经做了一些更改,现在ArrayQueue是我的类,我的所有方法都在这里实现 QueueElement是另一个保存元素类型的类。。 我认为现在的问题在于ArrayQueue类 import java.io.*; import java.util.Scanner; public class QueueTest { private st

我的程序在第一个元素进入数组后停止。你能帮我吗?代码如下: 对不起 我已经做了一些更改,现在ArrayQueue是我的类,我的所有方法都在这里实现 QueueElement是另一个保存元素类型的类。。 我认为现在的问题在于ArrayQueue类

              import java.io.*;
             import java.util.Scanner;
           public class QueueTest
          { private static  Scanner scan =new Scanner(System.in);
               public static void main(String[] args)
                   {
              ArrayQueue queue = new ArrayQueue();
              System.out.println("insert :" +
            " P: to print the array "+
            "S: to sort "+
            "E: to empty"); 
            do
             {
        if (userInput.startsWith("Y")) {
            System.out.println("insert the value of element");
            int vl = scan.nextInt();
            System.out.println("insert the description");
            String p = scan.next();
            System.out.println("insert true or false");
            boolean vlf = scan.nextBoolean();
            queue.shtoElement(new QueueElement(vl, p, vlf));
        } else if (userInput.startsWith("P")) {
            queue.shfaqArray();//display the array
        } else if (userInput.startsWith("S")) {
            queue.rendit();//sort the array
        } else if (userInput.startsWith("E")) {
            queue.Empty();//empty array
        } 
        System.out.println("Insert:" + " P: to display the array "
                + " S: to sort array "
                + " E: to empty");
        userInput = scan.next();
        } while (!userInput.equalsIgnoreCase("exit"));
              }
                 }
这是ArrayQueue类

                 public class ArrayQueue implements Queue

                             {
                //build the queue
          QueueElement[] tabela= new QueueElement[MADHESIA];
            QueueElement element= new QueueElement();
          //test if queue is empty
             public boolean isEmpty()
                {

               boolean empty = true;
                 for(int k =0;k<tabela.length;k++)
                      {
                            if(tabela[k] !=null)
                        empty =false;
                   break;
                                }
                            return empty;
                                          }

            public boolean isFull()
                {
                    boolean full=false;
                    for(int k=0;k<tabela.length;k++)
            {
        if(tabela[k]!=null)
            full=true;
        break;
            }
    return full;
        }

    //sort the array
        public void rendit()
           { 
    QueueElement temp=tabela[0];
    for(int i=0;i<tabela.length;i++)
    {
        for(int j=i+1;j<tabela.length;j++)
            if(tabela[j]!=null)
            {
            if(tabela[j].compareTo(tabela[i])==1)
            {
                tabela[j]=temp;
                tabela[i]=tabela[j];
                temp=tabela[i];
            }
            else 
                {
                nrElementeve++;
                }
            }
        if(tabela[i].getVlefshmeria()==false)
        {
            hiqElement(i,temp);
             }
            }
               }
    // add element into the array

           public void shtoElement(QueueElement el)
                  {     
                if(isEmpty())
        {
        tabela[0]=el;
        }
    else
         {
            for(int i=0;i<tabela.length;i++) 
               {    
                   if(tabela[i]!= null && (el.compareTo(tabela[i])==0))
                       {
    System.out.println("element can't be added into array cause it exists !");
                        }              
                   {
                       if(isFull())
                       {                        
                            int index=tabela.length;
                            tabela=rritMadhesine(tabela);
                            tabela[index]=el;
                     }  
                 else
                 {
            for(int j=0;j<tabela.length;j++)
        {
        if(tabela[j]==null)
                  tabela[j]=el;
        break;
        }
                        }
               }
         }
               }

             } 
       //find max of array

         public QueueElement gjejMax()
            {
          QueueElement max = tabela[0];
           for (QueueElement element :tabela)
              {
    if(element.getValue() > max.getValue())
        {
        max =element;
        }
    return max;
           }
          return max;
                } 
            //find min of array
            public QueueElement gjejMin()
                  {
                    QueueElement min= tabela[0];
                     for(QueueElement element : tabela)
                  {
                  if(element.getValue()< min.getValue())
               {
                    min=element;
                           }
                        return min;
                              }
                              return min;
                                }

             //remove element from array

             public void hiqElement(int indeksi, QueueElement temp) 
                   {
                      if(tabela.length > 0)
                      {
                  if(gjejMax().compareTo(temp)==0 || gjejMin().compareTo(temp)==0)
               {
                   System.out.println("element can't be removed!");
                   }
                     else
            {
                  for(int i=indeksi;i<tabela.length;i++)
                        {
                      tabela[i]=tabela[i+1];
                               }
                    }
                          nrElementeve--;
                                 }
                          }

        //empty array

           public void Empty()
                {
            tabela= new QueueElement[MADHESIA];
                           }

                       //display the array

                  public  void shfaqArray()
                     {
              for(int i=0;i< tabela.length;i++)
               {
              if(tabela[i]!=null)
             {
                System.out.println(tabela[i]);
            }
                else
      break;
                  }
                }

         //increase the length of array

         public static QueueElement [] rritMadhesine(QueueElement[] array){  
            QueueElement[] tab=new QueueElement[array.length+2];  
              return tab; 
                    }
                     private int nrElementeve;
                 private static final int MADHESIA = 10;
                      }
公共类ArrayQueue实现队列
{
//构建队列
QueueElement[]tabela=新的QueueElement[MADHESIA];
QueueElement=新的QueueElement();
//测试队列是否为空
公共布尔值为空()
{
布尔空=真;

对于(int k=0;k不知道
ArrayQueue
QueueElement
是什么,但是

看起来您正在阅读用户输入,然后通过决策树根据该输入决定要做什么。但在每一点上,您都在阅读用户输入:

     if(scan.next().startsWith("Y"))
     {
        System.out.println("Jepni vleren e elem");
        vl=scan.nextInt();
        System.out.println("Jepni pershkrimin  e elem");
        p=scan.next();
        System.out.println("Jepni vlefshmerine e elem");
        vlf=scan.nextBoolean();
        queue.shtoElement(new QueueElement(vl,p,vlf));
     }
     else
     {
        if(scan.next().startsWith("P"))
           queue.shfaqArray();
     }
     if(scan.next().startsWith("E"))
        queue.Empty();
     if(scan.next().startsWith("S"))
        queue.rendit();
     else
     {
        break;
     }
我想你想要的东西更像:

     String userInput = scan.next();
     if(userInput.startsWith("Y"))
     {
        System.out.println("Jepni vleren e elem");
        vl=scan.nextInt();
        System.out.println("Jepni pershkrimin  e elem");
        p=scan.next();
        System.out.println("Jepni vlefshmerine e elem");
        vlf=scan.nextBoolean();
        queue.shtoElement(new QueueElement(vl,p,vlf));
     }
     else if(userInput.startsWith("P"))
        queue.shfaqArray();
     else if(userInput.startsWith("E"))
        queue.Empty();
     else if(userInput.startsWith("S"))
        queue.rendit();
     else
     {
        break;
     }

在这里,您可以读取一次用户输入(
String userInput=scan.next();
)然后根据<代码>用户输入< /代码>变量决定如何做,而不是每次重新扫描。此外,看起来你可能在中间的某个地方丢失了一些<代码>其他< /Cal>语句。<>代码> < /代码> s意味着更多的答案,对吗?是否有任何错误?至少格式正确,没有错误的大OC也OC。cur由于您可能会在格式不正确的代码中漏掉{}。代码中的长注释部分是什么?如果不需要,请在这里发布之前删除它。还有什么是
ArrayQueue
,其不可编译的代码请提供SSCCE(简短、自包含、正确的示例)我的代码的问题是,只有第一个元素进入数组,而prog什么都不做,,,我希望prog继续运行,直到用户输入'q',所以我想显示“put the value of elem,put the descript of elem..,如果它是真的或假的”这些输入被输入到array@AnnckyHome可能是因为它中断了循环,或者因为您在每个if语句中调用
scan.next()
,它正在等待更多输入,您读了我的答案吗?是的..我读了..所以我不必每次都放。next()方法???好的,我会一直尝试,因为它得到了我输入的第一个元素,然后程序终止???还有其他想法吗???@AnnckyHome不是真的,我正在查看我在上面突出显示的代码块,我对它进行了修改,但我在你的问题中没有看到任何修改。你能修改代码以反映你所做的吗当你说“这样我就不必每次都放。next()方法???好的,我会试试thanx”时发生了变化?