程序应该返回序列中有多少正数和负数。
主要方法将从输入中读取一系列数字,并且每个数字使用以下方法评估它是正数还是负数。
public static int positiveOrNegativeNumber(int n) {
int positiveNumber; //counter for positive numbers
int negativeNumber; //counter for negative numbers
positiveNumber=0;
negativeNumber=0;
if (n>0) {
positiveNumber = positiveNumber + 1;
} else if (n<0) {
negativeNumber = negativeNumber + 1;
}
return positiveNumber & negativeNumber;
}
表达式返回positiveNumber&amp; negativeNumber 将它们都归还?
编辑:所以,按照Java Geo的建议,我得到了这个:
public static NumCounter positiveOrNegativeNumber(int n, NumCounter numCounter) {
if (n>0) {
numCounter.setPositiveNumCounter(numCounter.getPositiveNumCounter()+1);
} else if (n<0) {
numCounter.setNegativeNumCounter(numCounter.getNegativeNumCounter()+1);
}
return numCounter;
}
但我不知道在主要方法中应该添加什么来打印出来
public static void main(String[] args) {
int n;
while(!Lettore.in.eoln()) { //while the line has not ended
n = Lettore.in.leggiInt(); //read n from input
// what is missing here??
}
}
不要担心Lettore.in.eoln和Lettore.in.leggiInt,这些方法只是让您无需使用扫描仪即可轻松获取输入内容。
答案 0 :(得分:2)
不,positiveNumber & negativeNumber
返回两个整数的按位AND的结果,并且根据您的逻辑,将始终返回0(0 & 1 == 0
和0 & 0 == 0
)。
如果要返回多个值,可以返回int[]
或包含多个字段的类的实例。
那就是说,你的方法并不算什么。它接收一个数字,即使你返回了两个计数器,其中一个将为0而另一个为1(除非输入为0)。如果要计算序列中正值和负值的数量,则应将输入数字数组传递给方法。
如果您想为方法的每次调用传递一个序列号,您可以让您的positiveNumber
和negativeNumber
个成员static
成员,并初始化它们到你方法之外的0
。在这种情况下,您的方法根本不需要返回任何内容,因为您可以从方法外部访问计数器。
答案 1 :(得分:2)
我建议创建一个班级&#34; NumCounter&#34;
public class NumCounter {
int positiveNumCounter;
int negativeNumCounter;
public int getPositiveNumCounter() {
return positiveNumCounter;
}
public void setPositiveNumCounter(int positiveNumCounter) {
this.positiveNumCounter = positiveNumCounter;
}
public int getNegativeNumCounter() {
return negativeNumCounter;
}
public void setNegativeNumCounter(int negativeNumCounter) {
this.negativeNumCounter = negativeNumCounter;
}
}
然后修改您的方法,如
public static NumCounter positiveOrNegativeNumber(int n, NumCounter numCounter) {
if (n>0) {
numCounter.setPositiveNumCounter(numCounter.getPositiveNumCounter()+1);
} else if (n<0) {
numCounter.setNegativeNumCounter(numCounter.getNegativeNumCounter()+1);
}
return numCounter;
}
答案 2 :(得分:0)
不,您可以返回两个原始类型值,如上所示。
但Java有一个很好的功能来返回对象。在上面的例子中,您可以尝试返回一个Map或您自己的自定义对象,其中包含{“positiveNumber”,X}和{“negetiveNumber”,Y}
//Define in class as:
static Map<String, Integer> map =new HashMap<String, Integer>();
public static Map<String, Integer> positiveOrNegativeNumber(int n) {
if (n > 0) {
Integer positiveNumber = map.get("positiveNumber");
if(positiveNumber != null){
positiveNumber = positiveNumber + 1;
map.put("positiveNumber", positiveNumber);
}
else
map.put("positiveNumber", 1);
} else if ( n < 0 ) {
Integer negetiveNumber = map.get("negetiveNumber");
if(negetiveNumber != null){
negetiveNumber = negetiveNumber + 1;
map.put("negetiveNumber", negetiveNumber);
}
else
map.put("negetiveNumber", 1);
}
return map;
}
答案 3 :(得分:0)
没有。但是你可以返回一个数组。这些数字可能存储在数组中,可以返回数组。因此可以返回int数组。
答案 4 :(得分:0)
试试这个
public static ArrayList<Integer> positiveOrNegativeNumber(int n) {
int positiveNumber; //counter for positive numbers
int negativeNumber; //counter for negative numbers
positiveNumber=0;
negativeNumber=0;
if (n>0) {
positiveNumber = positiveNumber + 1;
} else if (n<0) {
negativeNumber = negativeNumber + 1;
}
ArrayList<Integer> array = new ArrayList();
array.add(positiveNumber );
array.add(negativeNumber );
return array ;
}
现在array.get(0)
是positiveNumber的数量,
而array.get(1)
是negativeNumber的数量。
答案 5 :(得分:0)
您可以尝试打包并打开这些号码。
例如:
使用那些int变量构造一个int:positive
和negative
蒙面:
int packed = positive << 16 | negative;
您可以在positiveOrNegativeNumber
函数中返回该值,当您需要读取这些值时,请使用以下命令将其解压缩:
int unpackedNegative = packed & 0xffff;
int unpackedPositive = packed >> 16;