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