Java 如何将一些元素添加到从具有特定方法的类创建的堆栈中
因此,我获得了以下GradedActivity课程:Java 如何将一些元素添加到从具有特定方法的类创建的堆栈中,java,Java,因此,我获得了以下GradedActivity课程: public class GradedActivity { private double score; // Numeric score public void setScore(double s) { if (s < 0) score = 0.0; else if (s > 100) score = 100.0; else score = s; } p
public class GradedActivity
{
private double score; // Numeric score
public void setScore(double s)
{
if (s < 0)
score = 0.0;
else if (s > 100)
score = 100.0;
else
score = s;
}
public double getScore()
{
return score;
}
public char getGrade()
{
char letterGrade;
if (score >= 90)
letterGrade = 'A';
else if (score >= 80)
letterGrade = 'B';
else if (score >= 70)
letterGrade = 'C';
else if (score >= 60)
letterGrade = 'D';
else
letterGrade = 'F';
return letterGrade;
} }
一切编译都没有错误,但getScore没有在我的测试类中计算获得的/total(返回0):
public class PADemo
{
public static void main(String[] args)
{
ProgrammingAssignment p1 = new ProgrammingAssignment(28,30);
GradedActivity p2 = new ProgrammingAssignment(0,30);
System.out.println (p1.getPointsObtained());
System.out.println (p1.getPointsTotal());
System.out.println (p1.getScore());
System.out.println (p1.getGrade());
System.out.println (p2.getScore());
System.out.println (p2.getGrade());
p1.setPointsObtained(25);
p1.setPointsTotal(40);
System.out.println (p1.getScore());
System.out.println (p1.getGrade() == 'F');
}
}
如何使用getScore()获得分数(获得的分数/总分)
测试类返回:
二十八
30
0
F
0
F
0
true
StackInt
是一个接口
,因此该接口中的方法将是抽象方法。
当一个方法是抽象的时,它没有一个主体
因此,为了使用接口的方法,我们需要覆盖接口的所有方法。为此,我们实现了一个接口,如
class Bullcrap implements StackInt
注意
在实现接口时,您必须覆盖其所有方法,即
E push(E obj);
E peek();
E pop();
boolean empty();
属于StackInt
的所有这些方法都应该在Bullcrap
class Bullcrap implements StackInt {
LinkedList<Object> queue = new LinkedList<>();
Stack<Object> st = new Stack<>();
@Override
public Object push(Object obj) {
if(st.size() < 7) {
st.push(obj);
return st;
}else if(queue.size() < 6) {
queue.add(obj);
return queue;
}
return null;
}
@Override
public Object peek() {
if(st.size() > 0 ) {
return st.peek();
}else if(queue.size() > 0) {
return queue.getFirst();
}
return null;
}
@Override
public Object pop() {
if(st.size() > 0) {
return st.pop();
}else if(queue.size() > 0) {
return queue.removeFirst();
}
return null;
}
@Override
public boolean empty() {
return st.isEmpty();
}
}
以下是如何在名为numaded
的变量中跟踪添加了多少项。每次向收藏中添加内容时,都会将numAdded
增加1
公共类Bull{
Queue Queue=new LinkedList();
StackInt stack=newlinkedstack();
int numAdded=0;
公共布尔addSomeStuff(字符串填充){
布尔加法=假;
如果(未加工<8){
推(东西);
添加=真;
}else if(queue.size()<6){
added=queue.add(填充);
}
如有(新增){
++裸体;
}
增加了退货;
}
}
您需要实现StackInt
接口,编写自己的堆栈,然后执行所有插入和删除操作。@ScubaSam请将您的问题包括您必须完成的原始作业/家庭作业。不清楚你想做什么。看起来您应该在一个新类中实现StackInt
接口,但您试图将其用于其他用途。@ScubaSam您所说的不清楚,因为StackInt
是一个接口,而不是您所说的类。您需要一个实现该接口的类。看起来你的作业/家庭作业希望你做到这一点,但我们不确定。请把你的问题包括给你的原始作业/家庭作业,这样我们可以看到你应该做什么。这可能是一个清晰的想法。这是听起来像一套指令的两个摘录。在你的问题中包括实际的说明如何?听起来你需要跟踪你在变量中添加到堆栈中的项的数量。不,我没有试图重写或覆盖StackInt,那么你是什么。。你能说得更具体一点吗?我正试图在给定的参数范围内,在addSomeStuff方法中,将stackInt创建的stack对象添加元素如果它有一个size方法,它将非常简单,但不幸的是,我需要解决它,只是为了处理添加到其中的内容。为StackInt
size维护一个全局变量。这似乎可行,但只是缺少一件事:使队列的最大值为6@ScubaSam好啊我已经补充了这一点。如果队列中有6个项目,则不会再添加任何项目。
class Bullcrap implements StackInt {
LinkedList<Object> queue = new LinkedList<>();
Stack<Object> st = new Stack<>();
@Override
public Object push(Object obj) {
if(st.size() < 7) {
st.push(obj);
return st;
}else if(queue.size() < 6) {
queue.add(obj);
return queue;
}
return null;
}
@Override
public Object peek() {
if(st.size() > 0 ) {
return st.peek();
}else if(queue.size() > 0) {
return queue.getFirst();
}
return null;
}
@Override
public Object pop() {
if(st.size() > 0) {
return st.pop();
}else if(queue.size() > 0) {
return queue.removeFirst();
}
return null;
}
@Override
public boolean empty() {
return st.isEmpty();
}
}
public static void main (String[] args) throws Exception{
StackInt<Integer> stack = new Bullcrap();
System.out.println("is Empty? : "+stack.empty());
for(int i = 1 ; i < 15 ;i++) {
System.out.println(stack.push(i));
}
System.out.println("Is empty ? : "+stack.empty());
System.out.println("Now POP:");
for(int i = 1 ; i < 15 ; i++) {
if(i==8){
System.out.println();
System.out.println("Stack Data Ended: Now Queue");
}
if(i <= 7) {
System.out.print(stack.pop()+", ");
}else {
System.out.print(stack.pop()+", ");
}
}
}// end of main
is Empty? : true
[1]
[1, 2]
[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7]
[8]
[8, 9]
[8, 9, 10]
[8, 9, 10, 11]
[8, 9, 10, 11, 12]
[8, 9, 10, 11, 12, 13]
null
Is empty ? : false
Now POP:
7, 6, 5, 4, 3, 2, 1,
Stack Data Ended: Now Queue
8, 9, 10, 11, 12, 13, null,