找不到最高和最低

时间:2017-12-19 06:11:43

标签: java

我有最高和最低的问题。

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);
 }
 }

2 个答案:

答案 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;
}

希望这会有所帮助。享受:)