【问题标题】:How do I match the year with value for-loop in java?java - 如何将年份与Java中的值for-loop相匹配?
【发布时间】:2020-10-11 00:26:05
【问题描述】:

我是编程新手,所以请不要评判我。我在做一个项目,我每年都加一个分数。对于输出,它应该说最高分和它所在的年份,但我不知道如何显示与疮匹配的年份。

预期输出:

输入年数:5

输入起始年份:1999

输入 1999 年的统计数据:4

输入 2000 年的统计数据:7

输入 2001 年的统计数据:8

输入 2002 年的统计数据:10

输入 2003 年的统计数据:6

2002 年最好的统计数据是 10

1999 年最差的数据是 4

我的输出:

输入年数:5

输入起始年份:1999

输入 1999 年的统计数据:4

输入 2000 年的统计数据:7

输入 2001 年的统计数据:8

输入 2002 年的统计数据:10

输入 2003 年的统计数据:6

2004 年最好的统计数据是 10

这是我的代码

import java.util.Scanner;

public class Assignment5A {
    public static void main(String[]args){
        Scanner sc = new Scanner(System.in);

        System.out.print("Enter the number of years: ");
        int nubyear = sc.nextInt();

        int years [] = new int[nubyear];

        int i;
        int j;
        int h;
        int startyear = 0;
        int large =years[0];
        int yearcountr=0;


        System.out.print("Enter the starting year: ");
        startyear = sc.nextInt();

        for (i=0; i<nubyear; i++){
             years[i] = startyear++;
            System.out.print("Enter stat for year "+years[i]+": ");
             years[i] = sc.nextInt();
             if (large < years[i]){
                large = years[i];
                years[i] = startyear;
             }
            }
        System.out.print("Best stat was "+large+" in year "+startyear );
        }

}

【问题讨论】:

    标签: java loops


    【解决方案1】:

    如果您不打算检索用户输入的所有值,则实际上不需要数组。您可以在用户输入每个值时对最高值进行比较。

    import java.util.Scanner;
    
    public class Assignment5A {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
    
            System.out.print("Enter the number of years: ");
            int nubyear = sc.nextInt();
    
            System.out.print("Enter the starting year: ");
            int startyear = sc.nextInt();
    
            int highYear = 0; //variable to hold the year with the highest stat
            int highStat = 0; //variable to hold the current highest stat
            
            for (int i = 0; i < nubyear; i++) { 
                int tempYear = startyear++; //Hold the current year value until the comparison is done.
                System.out.print("Enter stat for year " + tempYear + ": ");
                int tempStat = sc.nextInt(); // Hold the current year stat until the comparison is done.
                if (highStat < tempStat) { //If the value entered is higher than the previous one, save the year and stat.
                    highYear = tempYear;
                    highStat = tempStat;
                }
            }       
            System.out.print("Best stat was " + highStat + " in year " + highYear);
        }
    
    }
    

    【讨论】:

      【解决方案2】:
      import java.util.Scanner;
      
      public class YearDemo {
      
          public static void main(String[] args) {
              Scanner sc = new Scanner(System.in);
              int numOfYrs = 0, startYrs = 0,statInput = 0,count = 0;
      
              System.out.println("Enter the number of years: ");
              numOfYrs = sc.nextInt();
              int years[] = new int[numOfYrs];
              int stat[] = new int[numOfYrs];
              
              System.out.println("Enter the starting year: ");
              startYrs = sc.nextInt();
              
              while (numOfYrs != 0) {
                  System.out.println("Enter stat for year: " + startYrs);
                  statInput = sc.nextInt();
                  years[count] = startYrs++;
                  stat[count++] = statInput;
                  numOfYrs--;
              }
              
              int largest = -(Integer.MAX_VALUE),smallest = Integer.MAX_VALUE,bestYear = 0,worstYear = 0;
              for (int i = 0; i < stat.length; i++) {
                  if(largest < stat[i]) {
                      largest = stat[i];
                      bestYear = years[i];
                  }
                  if(smallest > stat[i]) {
                      smallest = stat[i];
                      worstYear = years[i];
                  }
              }
              System.out.println("Best Year: " + largest + " in year " + bestYear);
              System.out.println("Worst Year: " + smallest + " in year " + worstYear);
          }
      
      }
      

      【讨论】:

        【解决方案3】:

        你的代码应该是这样的:

            Scanner sc = new Scanner(System.in);
            System.out.print("Enter the number of years: ");
            int nubyear = sc.nextInt();
        
            int years [] = new int[nubyear];
        
            int i;
            int j;
            int h;
            int startyear = 0;
            int large =years[0];
            int yearcountr=0;
            int largest_year = 0 ;
        
            System.out.print("Enter the starting year: ");
            startyear = sc.nextInt();
        
            for (i=0; i<nubyear; i++){
                 years[i] = startyear;
                System.out.print("Enter stat for year "+years[i]+": ");
                 years[i] = sc.nextInt();
                 if (large < years[i]){
                    large = years[i];
                    largest_year = startyear ;
                 }
                 startyear ++ ;
                }
            System.out.print("Best stat was "+large+" in year "+largest_year );
            }
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-10-09
          • 2020-01-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-21
          相关资源
          最近更新 更多