Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何显示数组中两个数字之间的信息?_Java_Netbeans_Netbeans 8 - Fatal编程技术网

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

Java 如何显示数组中两个数字之间的信息?,java,netbeans,netbeans-8,Java,Netbeans,Netbeans 8,如何显示每个级别(R、1、2、3、4)的学生人数 该程序接受用户输入的数字:R为50或更低,级别1为40-60,级别2为60-70,级别3为70-80,级别4为80+ 我正在使用一个数组: ArrayList<Integer> strArray = new ArrayList<>(); ArrayList strArray=new ArrayList(); 显示某人输入的信息。我只是有点麻烦。有人能帮我吗?我正在使用NetBeans 输入示例:12,32,56,76

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

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

我正在使用一个数组:

ArrayList<Integer> strArray = new ArrayList<>(); 
ArrayList strArray=new ArrayList();
显示某人输入的信息。我只是有点麻烦。有人能帮我吗?我正在使用NetBeans

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


我想让它显示R:2,1:1,2:0,3:2,4:2,这里我使用了if语句,并将结果保存在字符串中。然后将字符串存储到数组列表中:

 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);
ArrayList strArray=new ArrayList();
int txtLevel=Integer.parseInt(userTxt.getText());
字符串结果=”;

如果(txtLevel>=40&&txtLevel=60&&txtLevel=70&&txtLevel请尝试下面的代码,这将对您有所帮助

   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);
   }
public void showResult()
{
int LevelR=0,Level1=0,Level2=0,Level3=0,Level4=0;
ArrayList strArray=新的ArrayList();
增补(12);
增补(32);
增补(56);
增补(76);
strArray.add(89);
增补(87);
增补(78);
用于(int i:strArray)
{
如果(i<50)
{
LevelR++;
}
否则,如果(i>=50&&i<60)
{
级别1++;
}
否则,如果(i>=60&&i<70)
{
级别2++;
}
否则,如果(i>=70&&i<80)
{
级别3++;
}
如果(i>=80),则为else
{
级别4++;
}
}
系统输出打印项次(“R:+LevelR+”,1级:+Level1+”,2级:+Level2+”,3级:+Level3+”,4级:+Level4);
}

我在函数中静态添加了值,您可以在函数中传递它,并根据需要使用它。

关于您的问题,我假设您是Java初学者,仍在学习编程的基本概念

您必须遵循以下步骤:

  • 您可以预先定义范围。上面的解决方案也会起作用。否则您可以使用Java的
    ValueRange
    功能
  • 扫描输入字符串。您可以使用
    Scanner
    进行扫描
  • 扫描输入字符串后,必须删除逗号以分隔数字
  • 您必须将输入数字映射到其适当的范围,并获取每个范围中输入值的数量
  • 现在您必须生成预期的输出
  • 下面的解决方案使用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);
    }
    
    publicstaticvoidmain(字符串[]args){
    //在输出中定义范围及其消息
    Map rangeToMessage=新建LinkedHashMap(){
    {
    卖出(价值范围为(0,40),“R”);
    出售(价值范围为(40,60),“1级”);
    出售(价值范围为(60,70),“2级”);
    出售(价值范围为(70,80),“3级”);
    put(取值范围为(80,整数最大值),“4级”);
    }
    };
    //进程输入字符串
    字符串输入=“12,32,56,76,89,87,78”;
    输入。拆分(“,”);
    List strArray=Arrays.asList(input.split(“,”);
    函数getRange=value->rangeToMessage.keySet().stream()
    .filter(t->t.isValidIntValue(value)).findFirst();
    //将输入数字映射到其适当的范围,并获取每个范围中输入值的数量
    Map rangeNcount=strArray.stream().Map(Integer::parseInt).Map(getRange)
    .filter(opt->opt.isPresent()).map(opt->opt.get())
    .collect(Collectors.groupingBy(Function.identity()、Collectors.counting());
    //生成预期的输出消息
    函数getCount=range->(rangeNcount.get(range)=null)?Long.valueOf(0):rangeNcount.get(range);
    String outputMessage=RangeTomMessage.keySet().stream().map(范围->RangeTomMessage.get(范围)+:“+getCount.apply(范围)).collect(收集器.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 size=strArray.size();
    整数和=0;
    int a=0;
    int b=0;
    int c=0;
    int d=0;
    int e=0;
    int aver=总和/大小;
    
    对于(int counter=0;counter我希望我能回答你的问题。不过,如果你需要任何帮助,请告诉我。我已经让它工作了,我可以帮你一点忙,因为你必须写txtlevel==80,或者它不计算任何数字,比如70,80,60。我可以帮助你对数组进行排序。stringsthx lol我在你发布这个thx之前完成了它,但这个程序仍然是窃听你得不到像分类80这样的值