Java 8 以上(包含java8) Lambda 方式,这种方式比较简洁,代码如下:
创新互联建站专业提供成都主机托管四川主机托管成都服务器托管四川服务器托管,支持按月付款!我们的承诺:贵族品质、平民价格,机房位于中国电信/网通/移动机房,服务器托管服务有保障!
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class App20 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ListFloat scores = new ArrayList();
System.out.println("请输入10个人的成绩:");
for (int i = 0; i 10; i++) {
scores.add(scanner.nextFloat());
}
float max = scores.stream().max((x, y) - Float.compare(x, y)).get();
System.out.println("最高分:" + max);
float min = scores.stream().min((x, y) - Float.compare(x, y)).get();
System.out.println("最低分:" + min);
float average = scores.stream().reduce(0.0f, Float::sum) / scores.size();
System.out.println("平均分:" + average);
scores.sort((x, y) - Float.compare(x, y));
System.out.println("从小到大分数排序:");
scores.forEach(s - System.out.print(s + " "));
long n = scores.stream().filter(r - r average).count();
System.out.println("\n高于平均分的有" + n + "个");
}
}
传统方式,如下:
import java.util.Arrays;
public class App21 {
public static void main(String[] args) {
float[] scores = new float[] { 10f, 9f, 8f, 7f, 6f, 5f, 4f, 3f, 2f, 1f };
float max = Float.MIN_VALUE;
for(float score : scores) {
if (score max) {
max = score;
}
}
System.out.println("最高分:" + max);
float min = Float.MAX_VALUE;
for(float score : scores) {
if (score min) {
min = score;
}
}
System.out.println("最低分:" + min);
float sum = 0;
for(float score : scores) {
sum += score;
}
float average = sum / scores.length;
System.out.println("平均分:" + average);
// 从小到大排序
Arrays.sort(scores);
System.out.println("从小到大分数排序:");
for(float score : scores) {
System.out.print(score + " ");
}
int n = 0;
for(float score : scores) {
if (score average)
n++;
}
System.out.println("\n高于平均分的有" + n + "个");
}
}
用户表里面加一个字段status
当用户上线以后,就把status设置为1
统计在线人数就是一条sql语句:
select count(*) from 用户表 where status = 1
数组初始化时是需要定长的,z没有长度,所以第十行会报错,是空指针异常……
建议
1、先给数组赋长度,如果长度不够可以写了方法扩容。
2、使用ArrayList,就不用考虑长度问题了。
补:
应注意的问题:
1、将输入流进行类型转换前最好做个验证,如果我输入abcde,你这程序就会报错。
2、统计也可以使用Map进行,键用于存放类别,值用于存放个数,不过这样貌似麻烦点儿……不过我挺喜欢的说……哼哼哼哼
3、我习惯用scan扫描器的说,那样不用抛出IO异常(貌似)(个人习惯)……
4、我是菜鸟……
在类中声明一个静态变量如下 :
static int num=0 ,每次类初始化将num 加一。
静态变量为所有类共享,num的大小即为创建的student对象的数目
程序稍微改动如下:
class student {
String name;
static int num =0;
String id;
float ywscore;
float sxscore;
float sumscore;
float avgscore;
student(String name,String id,float ywscore,float sxscore){
this.name=name;
this.id=id;
this.ywscore=ywscore;
this.sxscore=sxscore;
num ++;
}
float sum(){
sumscore=sxscore+ywscore;
return sumscore;
}
float avg(){
avgscore=(sxscore+ywscore)/2;
return avgscore;
}
int getNum()
{
return num;
}
void showinfo(){
System.out.println("name: "+name);
System.out.println("id: "+id);
System.out.println("mathscore: "+sxscore);
System.out.println("langue: "+ywscore);
System.out.println("avg: "+avg());
System.out.println("sum: "+sum());
}
};
1.用session超时,session为null就表示下线了
2.也可以采用数据库中设置 临时表 来处理
一个用户登陆时向表中插进一条记录,用户离开时候删除该记录
如想统计在线人数,简单地执行
select count(*) from table... 即可
3.application对象中可以记住现在的人数,application的生命周期和服务器的生命周期一样长。
4.还有一种方法要用到一个文件global.jsa ,方法是(在JSP中)是sessionDestroy(),其中它是以session对象为参数的。还有要把global.jsa文件必须房子和JSP程序相同的文件目录内才行。
5.网页自动刷新的代码是:
在文件头部加上
meta http-equiv="refresh" content="15"
刷新间隔时间是15秒
6.在session中加入监听类,类的示例代码如下:
onLineUser.java
import javax.servlet.http.*;
import javax.servlet.*;
import java.util.*;
public class onLineUser implements HttpSessionBindingListener {
public onLineUser(){
}
private Vector users=new Vector();
public int getCount(){
users.trimToSize();
return users.capacity();
}
public boolean existUser(String userName){
users.trimToSize();
boolean existUser=false;
for (int i=0;iusers.capacity();i++ )
{
if (userName.equals((String)users.get(i)))
{
existUser=true;
break;
}
}
return existUser;
}
public boolean deleteUser(String userName) {
users.trimToSize();
if(existUser(userName)){
int currUserIndex=-1;
for(int i=0;iusers.capacity();i++){
if(userName.equals((String)users.get(i))){
currUserIndex=i;
break;
}
}
if (currUserIndex!=-1){
users.remove(currUserIndex);
users.trimToSize();
return true;
}
}
return false;
}
public Vector getOnLineUser()
{
return users;
}
public void valueBound(HttpSessionBindingEvent e) {
users.trimToSize();
if(!existUser(e.getName())){
users.add(e.getName());
System.out.print(e.getName()+"\t 登入到系统\t"+(new Date()));
System.out.println(" 在线用户数为:"+getCount());
}else
System.out.println(e.getName()+"已经存在");
}
public void valueUnbound(HttpSessionBindingEvent e) {
users.trimToSize();
String userName=e.getName();
deleteUser(userName);
System.out.print(userName+"\t 退出系统\t"+(new Date()));
System.out.println(" 在线用户数为:"+getCount());
}
}
jsp:
%@ page contentType="text/html;charset=gb2312" %
%@ page import="java.util.*" %
jsp:useBean id="onlineuser" class="temp.jb.onLineUser" scope="application"/
html
head
/head
body onUnload="postMessage()"
center
ph1登陆成功,欢迎访问/h1/p
/center
% session = request.getSession(false); %
%
String username=request.getParameter("username");
if (onlineuser.existUser(username)){
out.println("用户font color=red"+username+"/font已经登陆!");
}else{
session.setMaxInactiveInterval(50); //Sesion有效时长,以秒为单位
session.setAttribute(username,onlineuser);
out.println("欢迎新用户:font color=red"+username+"/font登陆到系统!");
}
out.println("br当前在线用户人数:font color=red"+onlineuser.getCount()+"/fontbr");
String ip = request.getRemoteAddr();
out.println("brIP:font color=red"+ip+"/fontbr");
Vector vt=onlineuser.getOnLineUser();
Enumeration e = vt.elements();
out.println("在线用户列表");
out.println("table border=1");
out.println("trtd用户名/td/tr");
while(e.hasMoreElements()){
out.println("trtd");
out.println((String)e.nextElement()+"br");
out.println("/td/tr");
}
out.println("/table");
%
center
p /p
[a href="javascript:window.close()"关闭窗口/a]
%
out.println("pa href='logout.jsp?username="+username+"'退出系统/a/p");
%
/center
Script
function postMessage(){
%onlineuser.deleteUser(request.getParameter("username"));%
}
/Script
/body
/html
public static void main(String[] args)
{
int a[]=new int[10];
Scanner sc = new Scanner(System.in);
System.out.println("请输入十个数字0~100");
for(int i=0;i10;i++)
{
System.out.println("输入第"+(i+1)+"数:");
a[i]=sc.nextInt();
}
int b[]=new int[11];
for(int i=0;i11;i++)
{
b[i]=0;
}
for(int i=0;i10;i++)
{
if(a[i]=0a[i]=9)
{
b[0]++;
}
else if(a[i]=10a[i]=19)
{
b[1]++;
}
else if(a[i]=20a[i]=29)
{
b[2]++;
}
else if(a[i]=30a[i]=39)
{
b[3]++;
}
else if(a[i]=40a[i]=49)
{
b[4]++;
}
else if(a[i]=50a[i]=59)
{
b[5]++;
}
else if(a[i]=60a[i]=69)
{
b[6]++;
}
else if(a[i]=70a[i]=79)
{
b[7]++;
}
else if(a[i]=80a[i]=89)
{
b[8]++;
}
else if(a[i]=90a[i]=99)
{
b[9]++;
}
else if(a[i]==100)
{
b[10]++;
}
}
System.out.println("0~9人数:"+b[0]+";10~19人数:"+b[1]+";20~29人数:"+b[2]+";30~39人数:"+b[3]+";40~49人数:"+b[4]+";50~59人数:"+b[5]+";60~69人数:"+b[6]+";70~79人数:"+b[7]+";80~89人数:"+b[8]+";90~99人数:"+b[9]+";100人数:"+b[10]);
for(int i=0;i11;i++)
{
System.out.println("第"+(i+1)+"段人数为:"+b[i]);
}
}
简单的方法是:
public static void main(String[] args)
{
int a[]=new int[11];
Scanner sc = new Scanner(System.in);
System.out.println("请输入十个数字0~100");
for(int i=0;i10;i++)
{
System.out.println("输入第"+(i+1)+"数:");
a[sc.nextInt()/10]++;//对于这种根据读取数据分段的数据利用int型数据整除可以很好的分出每个段的个数;
}
for(int i=0;i11;i++)
{
System.out.println("第"+(i+1)+"段人数为:"+a[i]);
}
}