这是我迄今为止所做的计划。我应该要求收银员输入价格,如果是宠物,则要求y或者n。然后,如果有5个或更多项,则该方法应该计算折扣。除了折扣方法的返回数据外,我的程序正在运行。
错误是68:error; cannot return a value from method whose result type is void.
我很困惑,为什么数据无效。如果我取出return discount;
语句,那么程序编译时没有错误。
import javax.swing.JOptionPane;
public class Assignment4
{
public static void main (String[] args)
{
double[] prices = new double[1000];
boolean[] isPet = new boolean[1000];
double enterPrice = 0;
int i = 0;
String yesPet = "Y";
int nItems = 0;
do
{
String input = JOptionPane.showInputDialog("Enter the price for the item: ");
enterPrice = Integer.parseInt (input);
prices[i] = enterPrice;
String petOrNo = JOptionPane.showInputDialog("Is this item a pet? Enter Y for pet and N for not pet.");
if (petOrNo.equalsIgnoreCase(yesPet))
{
isPet[i] = true;
}
else
{
isPet[i] = false;
}
i = i+1;
nItems = nItems + 1;
} while (enterPrice != -1);
//System.out.println(nItems);
}
public static void discount(double[] prices, boolean[] isPet, int nItems)
{
boolean found = false;
double[] discount = new double[nItems];
if (nItems > 6)
{
for (int i = 0; i < nItems; i++)
{
if (isPet[i] = true)
{
found = true;
break;
}
}
if (found = true)
{
for (int x = 0; x < nItems; x++)
{
if (isPet[x] = false)
{
int n = 0;
prices[x] = discount[n];
n = n + 1;
}
}
}
}
return discount;
}
}
答案 0 :(得分:2)
discount
方法需要返回double
数组。变化
public static void discount(double[] prices, boolean[] isPet, int nItems) {
到
public static double[] discount(double[] prices, boolean[] isPet, int nItems) {
没有为discount
数组中的任何条目分配值,因此每个值都为0.0
。
答案 1 :(得分:1)
public static void discount(double[] prices, boolean[] isPet, int nItems)
应替换为:
public static double[] discount(double[] prices, boolean[] isPet, int nItems)
顺便说一句,discount
永远不会被填充,它将返回一个空数组。
答案 2 :(得分:0)
方法签名是您和Java之间的编译时承诺 - 您承诺返回您指定的类型。方法签名中的void
意味着你不会返回任何东西,但是你会返回一些东西。这违反了承诺,因此错误。
您必须将方法签名更改为仅返回double[]
以履行对编译器的承诺。
同样情况是discount
实际上从未填充 ...赋值是从右到左的关联。因此,声明prices[x] = discount[n]
可能无法达到预期目的。