我没有在这里问过很多问题,如果我错误地提出了这个问题,那就很抱歉。
我试图在主类中调用变量AmountOfTickets。所以我可以用while循环的每个循环来更新它。我不知道如何在没有eclipse显示错误的情况下正确调用变量。
这是我创建变量AmountOfTickets的类 我正在尝试更新
template <typename T>
constexpr auto doSomeSum(const T* a, const T* b) {
if (a > b)return T{0};
auto sum = T{0};
while (a != b)
sum += *(a++);
return sum;
}
这是我尝试调用变量并使用它的主程序代码
public class TicketHandler {
public int TicketCost;
public static int AmountOfTickets;
public TicketHandler(int TicketCost, int AmountOfTickets){
this.TicketCost = TicketCost;
this.AmountOfTickets = AmountOfTickets;
}
public TicketHandler() {
TicketCost = 200;
AmountOfTickets = 50;
}
public int getTicketCost() {
return TicketCost;
}
public void setTicketCost(int ticketCost) {
TicketCost = ticketCost;
}
public static int getAmountOfTickets() {
return AmountOfTickets;
}
public void setAmountOfTickets(int amountOfTickets) {
AmountOfTickets = amountOfTickets;
}
public void ReduceNoOfTickets(int TicketsSold) {
this.AmountOfTickets = this.AmountOfTickets - TicketsSold;
}
}
谢谢。
答案 0 :(得分:0)
首先,你的名为AmountOfTickets的var是静态的,它意味着一个副本将存在于所有对象中,也就是你的方法getAmountOfTickets。
你这里有问题
AmountOfTickets = get.AmountOfTickets - 1
您必须使用ClassName.YourVar调用变量,如下所示:
TicketHandler.AmountOfTickets = TicketHandler.getAmountOfTickets() - 1;
也是你的方法。
你也可以导入这样的静态:
import java.util.Scanner;
import static huh.TicketHandler.*;
所以你可以使用:
AmountOfTickets = getAmountOfTickets() - 1;
&#34;您可以考虑创建一个对象并像这样调用var&#34;
public static void BlueRoute(){
Scanner Red = new Scanner(System.in);
TicketHandler objectOne = new TicketHandler(); //HERE I CREATED AN OBJECT
System.out.println();
int moneyin = 200;
while (moneyin <= 200)
{
System.out.println("Insert £" + moneyin);
int KeyIn = Red.nextInt();
moneyin = moneyin - KeyIn;
if (moneyin == 0){
System.out.println("Enjoy");
objectOne.AmountOfTickets = objectOne.getAmountOfTickets() - 1; //HERE I USED IT
break;
}
但由于这是静态的,它会将objectOne替换为
TicketHandler.AmountOfTickets = TicketHandler.getAmountOfTickets() - 1; //HERE I USED IT
所以,我认为你可以使用导入静态(因此你可以避免在静态之前编写相同的类名),或者先将类的名称放在名称和方法之后。
使用导入静态可能会很糟糕,如果有另一个具有与您相同的名称或方法的类并导入,因为编译器可以说,嘿,我想使用哪一个?
所以,我宁愿使用fullnameClass.varOrMethod
希望有所帮助
btw使用这个:TicketHandler.AmountOfTickets和这个:TicketHandler.getAmountOfTickets()可以在我说的所有ApplicationProgra的类代码中使用,因为它是静态的,因为你把它们公开了
public static int AmountOfTickets;
public static int getAmountOfTickets() {
return AmountOfTickets;
}
=)我猜这就是你要求的。 C-亚