如何显示每个级别(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,Lvl 1:1,Lvl2:0,Lvl3:2,Lvl 4:2
答案 0 :(得分:1)
请尝试下面的代码,这将有助于您,
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);
}
我在函数内部静态添加了值,您可以在函数中传递它,并根据您的要求使用它。
答案 1 :(得分:0)
这里我使用了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);
答案 2 :(得分:0)
关于你的问题,我假设你是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);
}
答案 3 :(得分:0)
我是如何解决它但却很混乱
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);
如果有人感到困惑,我的Array int就叫做str数组。
如果我在这个网站上并且任何人都需要这个任务的帮助,请问我,我觉得我很痛苦,我必须学习谷歌和youtube的所有内容。