我有最高和最低的问题。
import java.util.Scanner;
public class Lab3bq1
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
double [] num = new double[10];
double [] p = new double[10];
System.out.println("Enter the number of books purchased by :");
for(int i=0;i<num.length;i++)
{
System.out.print("Customer #"+(i+1)+ " = ");
num[i] = input.nextDouble();
}
System.out.println("Review for 10 Selected Customers");
System.out.println("Points Awarded:");
setp(num,p);
System.out.println("Total books purchased : "+settotalbook(num));
System.out.println("Highest points : Customer "+sethighest(p));
System.out.println("Lowest points : Customer "+setlowest(p));
}
public static void setp(double[] num, double[] p)
{
for(int i=0;i<p.length;i++)
{
if(num[i]>=1 && num[i]<=3)
p[i] = 10;
else if(num[i]<=6)
p[i] = 25;
else if(num[i]<=9)
p[i] = 40;
else
p[i] = 75;
System.out.println("Customer #"+(i+1)+ " = " + p[i] + " points");
}
}
public static double settotalbook(double[] num)
{
double total=0;
for(int i=0;i<num.length;i++)
{
total+=num[i];
}
return total;
}
public static double sethighest(double[] p)
{
double max=p[0], custnum=0;
for(int i=0;i<p.length;i++)
{
if(p[i]>max)
max=p[i];
custnum=i;
}
return (custnum+1);
}
public static double setlowest(double[] p)
{
double min=p[0], custnum=0;
for(int i=0;i<p.length;i++)
{
if(p[i]<min)
min=p[i];
custnum=i;
}
return (custnum+1);
}
}
答案 0 :(得分:0)
问题在于两种方法中的if
尝试:
if(p[i]<min){
min=p[i];
custnum=i;
}
和
if(p[i]>max){
max=p[i];
custnum=i;
}
存储具有最小值或最大值的客户编号..
答案 1 :(得分:0)
看起来你是初学者。无论如何,你应该以最快的方法返回max,并使用@Uta Alexandru建议的setlowest方法中的min。
代码中还有一个错误。每当我们写一些类似
的东西if(condition)
statement#1
statement#2
因此,如果condition为true,则只执行语句#1,语句#2超出条件。
您的代码中写了
if(p[i]>max)
max=p[i];
custnum=i;
和
if(p[i]<min)
min=p[i];
custnum=i;
custnum 会在循环的每次迭代中更新。
如果您希望仅在条件为真时才更新它,那么您需要将代码放在这样的块中。
if(p[i]>max) {
max=p[i];
custnum=i;
}
和
if(p[i]<min) {
min=p[i];
custnum=i;
}
希望这会有所帮助。享受:)