Java 如何显示数组中两个数字之间的信息?
如何显示每个级别(R、1、2、3、4)的学生人数 该程序接受用户输入的数字:R为50或更低,级别1为40-60,级别2为60-70,级别3为70-80,级别4为80+ 我正在使用一个数组: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
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这样的值