Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.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 计算ArrayList中在一定范围内的数字_Java_Arrays_List_Netbeans_Count - Fatal编程技术网

Java 计算ArrayList中在一定范围内的数字

Java 计算ArrayList中在一定范围内的数字,java,arrays,list,netbeans,count,Java,Arrays,List,Netbeans,Count,我正在添加用户输入的几个数字,并将它们添加到数组列表中 到目前为止,我的代码是: package project143; import java.util.*; /** * @author -- */ public class Histogram { /** * @param args the command line arguments */ public static void main(String[] args) { Sca

我正在添加用户输入的几个数字,并将它们添加到数组列表中

到目前为止,我的代码是:

package project143;

import java.util.*;

/**
 * @author --
 */
public class Histogram {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        // Input for grades
        int mark = 0;
        List<Integer> list = new ArrayList<Integer>();
        while (mark >= 0 && mark <= 100) {
            System.out.println("Enter students mark:");
            mark = input.nextInt();

            if (mark >= 0 && mark <= 100) {
                list.add(mark);
            }

        }
        System.out.println(list);
    }
}
package项目143;
导入java.util.*;
/**
*@作者--
*/
公共类直方图{
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
//等级输入
整数分=0;
列表=新的ArrayList();

当(mark>=0&&mark=0&&mark时,您可以通过将此代码放在从中获取输入的循环中,而无需列表

 if (mark <= 29) ++bombout;
 else if (mark <= 39) ++fail;
 else if (mark <= 69) ++pass;
 else ++excellent;

if(mark使用3个变量进行计数。添加mark to list时,根据条件增加变量。最后使用该计数变量打印开始。

-使用4个
int
变量存储4个范围

例如:

int range29;
int range39;
int range69;
int range100;
for(int i : list){

    if ( i>=0 & i<=29){   // better use Non-short circuit AND

          ++range29;
    }

  else if ( i>=30 & i<=39){   // better use Non-short circuit AND

          ++range39;
    }

  else if ( i>=40 & i<=69){   // better use Non-short circuit AND

          ++range69;
    }

  else if ( i>=70 & i<=100){   // better use Non-short circuit AND

          ++range100;
    }


}
-
通过
列表
循环
,以计算不同范围内的条目数。

例如:

int range29;
int range39;
int range69;
int range100;
for(int i : list){

    if ( i>=0 & i<=29){   // better use Non-short circuit AND

          ++range29;
    }

  else if ( i>=30 & i<=39){   // better use Non-short circuit AND

          ++range39;
    }

  else if ( i>=40 & i<=69){   // better use Non-short circuit AND

          ++range69;
    }

  else if ( i>=70 & i<=100){   // better use Non-short circuit AND

          ++range100;
    }


}
for(int i:list){
如果(i>=0&i=30&i=40&i=70&i如果使用,则可以编写以下代码。首先,我们设置您指定的范围:

private ImmutableList<Interval> ranges = Lists.immutable.with(
    Interval.fromTo(0, 29),
    Interval.fromTo(30, 39),
    Interval.fromTo(40, 69),
    Interval.fromTo(70, 100));
使用Java 8 Lambda语法,您可以编写以下代码:

MutableBag<Interval> countByRange = Bags.mutable.empty();
Interval inputs = Interval.from(5).to(100).by(5);
inputs.forEach((int grade) -> {
    countByRange.add(ranges.detect(range -> range.contains(grade)));
});
countByRange.forEachWithOccurrences((range, occurrences) ->
    {System.out.println(range + " : " + StringIterate.repeat('*', occurrences));});

注意:我是Eclipse集合的提交者。

到目前为止,您对如何实现它有何想法?我建议首先用纸和笔解决一个小问题。看看您所做的,并思考您使用的步骤和数据存储。尝试将其转换为Java。我如何实现这一点?因为您了解
Java
你可以通过你的逻辑技能快速实现这一点。你自己试试。@vels4j我知道一些基础知识,刚刚开始。问题是我不知道实现这一点所需的语法和函数,例如如何从数组中获取数字?@vels4j我在这个问题中没有看到任何关于Java的先验知识的说法,而这个问题似乎是一个非常基本的问题xercise在循环和条件语句中运行,因此我认为可以安全地假设OP还不了解Java,但正在尝试学习它。为什么不在填写列表时检查范围呢。而且您不需要检查下限,只要上限就足够了。
Interval.from(5).to(100).by(5)
    .collect(grade -> ranges.detect(range -> range.contains(grade)))
    .toBag()
    .forEachWithOccurrences((range, occurrences) ->
        {System.out.println(range + " : " + StringIterate.repeat('*', occurrences));});