在每个循环中正确使用数组名称
Using array names correctly in for each loop
给定以下示例代码,请帮我回答以下问题并提示
public class Coin
{
private String myColor;
private int mySideOne;
private double mySideTwo;
public Coin(String Color, int SideOne, double SideTwo)
{
myColor= Color;
mySideOne = SideOne;
mySideTwo = SideTwo;
}
//accessors getColor(), getSideOne(), and getSideTwo()
}
public class Total
{
private int myNumCoins;
private Coin[] moneyList;
//constructor
public Total(int myCoins)
{
myNumCoins = numCoins;
moneyList = new Coins[numCoins]
String color;
int mySideOne;
double mySideTwo;
for (int i = 0; i<numCoins; i++)
{
}
}
**
Question:
**
//Returns total amount for Coins
public double totalMoney()
{
double total = 0.0;
/* code to calculate
return total;
}
}
哪个代表正确的/代码来计算totalMoney方法中的金额*/?
A. for (Coin t: moneyList)
total+= moneyList.getSideTwo();
B. for (Coin t: moneyList)
total+=t.getSideTwo();
我认为 A 是正确的,因为 B. 中的 "t" 在代码中不存在。我怎么错了?
答案是 B,因为当您说 Ticket t 时,您在循环中声明了 t。循环迭代 ticketList 并且 t 将代表列表中的每个 Ticket。
让我们使用 A 评估代码:
public double totalPaid()
{
double total = 0.0;
for (Ticket t:tickList)
total+= tickList.getPrice();
return total;
}
tickList
是 Ticket
的数组。数组是一个对象,它只有一个名为 length
的 static final
字段。所以,tickList
不可能有 getPrice
。这意味着,选项 A 无法编译。
让我们使用 B. 评估代码:
public double totalPaid()
{
double total = 0.0;
for (Ticket t:tickList)
total+=t.getPrice();
return total;
}
在此声明:
I think A is right because the "t" in B. doesn't exist in the code. How am I wrong?
实际上,t
是在增强的for
循环语句中声明和使用的变量。 t
来自类型 Ticket
,它将获取存储在 tickList
中的每个 Ticket
对象引用的值。增强的 for
循环可以转换为数组的这种形式:
for (int i = 0; i < tickList.length; i++) {
Ticket t = tickList[i];
//use t in this scope
//in this case, it's used to accumulate the value of total
total += t.getPrice();
}
这使得 B 成为这个问题的解决方案。
给定以下示例代码,请帮我回答以下问题并提示
public class Coin
{
private String myColor;
private int mySideOne;
private double mySideTwo;
public Coin(String Color, int SideOne, double SideTwo)
{
myColor= Color;
mySideOne = SideOne;
mySideTwo = SideTwo;
}
//accessors getColor(), getSideOne(), and getSideTwo()
}
public class Total
{
private int myNumCoins;
private Coin[] moneyList;
//constructor
public Total(int myCoins)
{
myNumCoins = numCoins;
moneyList = new Coins[numCoins]
String color;
int mySideOne;
double mySideTwo;
for (int i = 0; i<numCoins; i++)
{
}
}
**
Question:
**
//Returns total amount for Coins
public double totalMoney()
{
double total = 0.0;
/* code to calculate
return total;
}
}
哪个代表正确的/代码来计算totalMoney方法中的金额*/?
A. for (Coin t: moneyList)
total+= moneyList.getSideTwo();
B. for (Coin t: moneyList)
total+=t.getSideTwo();
我认为 A 是正确的,因为 B. 中的 "t" 在代码中不存在。我怎么错了?
答案是 B,因为当您说 Ticket t 时,您在循环中声明了 t。循环迭代 ticketList 并且 t 将代表列表中的每个 Ticket。
让我们使用 A 评估代码:
public double totalPaid()
{
double total = 0.0;
for (Ticket t:tickList)
total+= tickList.getPrice();
return total;
}
tickList
是 Ticket
的数组。数组是一个对象,它只有一个名为 length
的 static final
字段。所以,tickList
不可能有 getPrice
。这意味着,选项 A 无法编译。
让我们使用 B. 评估代码:
public double totalPaid()
{
double total = 0.0;
for (Ticket t:tickList)
total+=t.getPrice();
return total;
}
在此声明:
I think A is right because the "t" in B. doesn't exist in the code. How am I wrong?
实际上,t
是在增强的for
循环语句中声明和使用的变量。 t
来自类型 Ticket
,它将获取存储在 tickList
中的每个 Ticket
对象引用的值。增强的 for
循环可以转换为数组的这种形式:
for (int i = 0; i < tickList.length; i++) {
Ticket t = tickList[i];
//use t in this scope
//in this case, it's used to accumulate the value of total
total += t.getPrice();
}
这使得 B 成为这个问题的解决方案。