如何显示数组中两个数字之间的#的信息?



如何显示每个级别(R, 1, 2, 3, 4)的学生人数?

该程序接受用户输入的数字:R为50及以下,级别1为40-60,级别2为60-70,级别3为70-80,级别4为80+

我正在使用一个数组:

ArrayList<Integer> strArray = new ArrayList<>(); 

显示一个人输入的信息。我只是遇到了一些麻烦。有人能帮帮我吗?我正在使用NetBeans。

示例输入:12、32、56、76、89、87、78

我想让它变成R:2, lv1:1, lv2:0, lv3:2, lv4:2

请尝试下面的代码,这将有助于您,

   public void showResult()
   {
       int LevelR = 0, Level1 = 0, Level2 = 0, Level3 = 0, Level4 = 0;
       ArrayList<Integer> strArray = new ArrayList<>();
       strArray.add(12);
       strArray.add(32);
       strArray.add(56);
       strArray.add(76);
       strArray.add(89);
       strArray.add(87);
       strArray.add(78);
       for(int i : strArray)
       {
           if(i < 50)
           {
               LevelR++;
           }
           else if(i >= 50 && i < 60)
           {
               Level1++;
           }
           else if(i >= 60 && i < 70)
           {
               Level2++;
           }
           else if(i >= 70 && i < 80)
           {
               Level3++;
           }
           else if(i >= 80)
           {
               Level4++;
           }
       }
       System.out.println("R:" + LevelR + ", Lvl 1:" + Level1 + ", Lvl2:" + Level2 + " ,Lvl3:" + Level3 + ", Lvl 4:" + Level4);
   }

我在函数内部静态地添加了值,您可以在函数中传递它并根据您的要求使用它

这里我使用了if语句并将结果保存在一个String中。然后将字符串存储到数组列表中:

 ArrayList<Integer> strArray = new ArrayList<>(); 
int txtLevel =Integer.parseInt(userTxt.getText());
            String result ="";
            if(txtLevel >=40 && txtLevel <60){
                result = "Level 1";
            }
            else if(txtLevel >=60 && txtLevel <70){
                result = "Level 2";
            }else if(txtLevel >=70 && txtLevel <=80){
                result = "Level 3";
            }else {
                result = "Level 4";
            }
strArray.add(result);

对于你的问题,我假设你是一个Java初学者,还在学习编程的基本概念。

您必须遵循以下步骤:

  1. 您可以预先定义范围。上面的解决方案也会起作用。否则你可以使用Java的ValueRange功能。
  2. 扫描输入字符串。您可以使用Scanner
  3. 在扫描输入字符串后,必须通过去掉逗号来分隔数字。
  4. 您必须将输入数字映射到相应的范围,并在每个范围中获得输入值的数量。
  5. 现在你必须产生预期的输出

下面的解决方案使用Java8实现步骤(2-5)。学习这个实现对你也很有用。

public static void main(String[] args) {
    //Define Range and their message in the output
    Map<ValueRange, String> rangeToMessage = new LinkedHashMap<ValueRange, String>() {
        {
            put(ValueRange.of(0, 40), "R");
            put(ValueRange.of(40, 60), "Lvl 1");
            put(ValueRange.of(60, 70), "Lvl 2");
            put(ValueRange.of(70, 80), "Lvl 3");
            put(ValueRange.of(80, Integer.MAX_VALUE), "Lvl 4");
        }
    };
    //Process Input String
    String input = "12,32,56,76,89,87,78";
    input.split(",");
    List<String> strArray = Arrays.asList(input.split(","));
    Function<Integer, Optional<ValueRange>> getRange = value -> rangeToMessage.keySet().stream()
            .filter(t -> t.isValidIntValue(value)).findFirst();
    //Map input numbers to their appropriate Range and get the number of input value in each Range
    Map<ValueRange, Long> rangeNcount = strArray.stream().map(Integer::parseInt).map(getRange)
            .filter(opt -> opt.isPresent()).map(opt -> opt.get())
            .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
    //Produce expected output message
    Function<ValueRange,Long> getCount = range-> (rangeNcount.get(range)==null)?Long.valueOf(0):rangeNcount.get(range);
    String outputMessage = rangeToMessage.keySet().stream().map(range->rangeToMessage.get(range)+":"+getCount.apply(range)).collect(Collectors.joining(","));
    System.out.println(outputMessage);
}

我是怎么解决的,但是它很乱

 int size=strArray.size();
 int sum=0;
 int a=0;
 int b=0;
 int c=0;
 int d=0;
 int e=0;
 int aver=sum/size;
for(int counter=0;counter<strArray.size();counter++){
    sum+=strArray.get(counter);
        if (strArray.get(counter)<50){
        a++;
        }
        if (strArray.get(counter)<60 && strArray.get(counter)>=50 && strArray.get(counter)==50)
        {
        b++;
        }if (strArray.get(counter)<70 && strArray.get(counter)>=60 && strArray.get(counter)==60){
        c++;
        }if (strArray.get(counter)<80 && strArray.get(counter)>=70 && strArray.get(counter)==70){
        d++;
        }if (strArray.get(counter)>=80 && strArray.get(counter)==80){
        e++;          
  }
}
            this.done.append("the average is: "+aver+
                    "Maximim value:"+Collections.max(strArray)+
            "Minimum value"+Collections.min(strArray)+
            "nNumber of level 4: " + e+"nNumber of level 3: "
            +d+"nNumber of level 2: "+c+"nNumber of level 1: "+b
            +"nNumber of level R: "+a);

我的数组int被称为str数组如果有人搞混了。

如果我在这个网站上,任何人在这个任务上需要帮助就问我,我感到你的痛苦,我不得不从谷歌和youtube上学习一切

相关内容

  • 没有找到相关文章

最新更新