2024-05-06 15:10:47 | 我爱编程网
程序运行截图:
学生类
/**
* 学生类
*
* @author wangliang
*
*/
public class Student {
int ID;// 学生学号
String name;// 学生姓名
double mathematics;// 数学分数
double chinese;// 语文分数
double english;// 英语分数
}
2.测试类:
public class Test {
public static final void main(String[] arg) {
List
//
List
listName.add("小明");
listName.add("小刚");
listName.add("小花");
listName.add("小红");
listName.add("小峰");
List
listMathematics.add(56.0);
listMathematics.add(89.0);
listMathematics.add(59.0);
listMathematics.add(70.0);
listMathematics.add(60.0);
for (int i= 0; i < 5; i++) {
Student student = new Student();
student.ID = i;
student.name = listName.get(i);
student.mathematics = listMathematics.get(i);
listStudents.add(student);
}
//求平均分
//数学总分
double tatol = 0;
for(Student student:listStudents) {
tatol += student.mathematics;
//
if (student.mathematics < 60) {我爱编程网
System.out.println("不及格学生姓名:" + student.name + " 学号:" + student.ID + "不及格课程 数学 ( "+student.mathematics +" )");
}
}
//输出平均分
double average;
System.out.println("数学平均分:" + (average = tatol / 5));
}
}
前台方式
1. 利用html2canvas实现前台截屏
html2canvas项目的gitHub地址
html2canvas示例
html2canvas可以将HTML代码块进行截取,并生成快照形式的canvas,然后可以利用html5的下载功能提供图片的下载接口,供用户下载。
优点:前台技术,实现比较容易。
缺点:此项目使用了html5的技术,因此在对IE的兼容上,只可以在IE9+的版本上使用。
使用时,需要引用jQuery.js和html2canvas.js。(html2canvas.js可以在github上下载)
具体JavaScript代码如下:
var canvas = function () {
html2canvas($("#chart"), {
onrendered: function (canvas) {
$("#class11").html(canvas);//将id为“class11”部分的代码转换为canvas
var type = 'png';//图片类型为png
var imgData = canvas.toDataURL('png');//将图片转换为png类型的流
var _fixType = function (type) {
type = type.toLowerCase().replace(/jpg/i, 'jpeg'); var r = type.match(/png|jpeg|bmp|gif/)[0]; return 'image/' + r;
}; var saveFile = function (data, filename) {
var save_link = document.createElementNS('
', 'a');
save_link.href = data;
save_link.download = filename; var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
save_link.dispatchEvent(event);
}; //下载时的文件名
var filename = 'baidufe_' + (new Date()).getTime() + '.' + type; // 下载文件
saveFile(imgData, filename);
}
});
后台方式(java)
1. 利用html2image实现
html2image的地址(google)
html2image是可以识别html标签并将html转换成图片的java项目。
优点:后台转换,故对浏览器的版本基本没有要求。
缺点:对样式的识别不是很好,转换出来的图片比较简单,基本没有可以兼容的样式。
使用方式:maven中引用如下依赖:
2. 利用DJNativeSwing项目实现
纯java代码实现。使用DJNativeSwing这个项目,构建一个swing浏览器,打开网址,之后截取图片。(需要eclipse的swt库支持)
优点:纯java实现。
缺点:需要多线程的支持,只在控制台方式实现过(由于本人对于多线程的掌握较弱,目前没有在spring项目中实现这个方法,求大神指导~~)
3. 利用phantomJs实现
phantomJs的GitHub地址
phantomJs官网
phantom利用的是webKit内核,全面支持web而不需浏览器支持,快速,原生支持各种Web标准。
优点:速度快,使用简单。
缺点:需要在项目的服务器端引用exe文件进行截图,并发性能有待考证。
我爱编程网(https://www.52biancheng.com)小编还为大家带来三道java编程题。求全部代码和执行截图。的相关内容。
public class JavaPractise {
public static void main(String[] args) {
JavaPractise o = new JavaPractise();
String str = "1342973451345";
String subStr = o.getMaxLengthAddPart(str);
System.out.println(subStr);
String binaryFlow = "000011110000011111";
String sameSubStr = o.getMaxSameSubStr(binaryFlow);
System.out.println(sameSubStr);
String letterFlow = "aaBBBcCCCCddddddEEEE";
String sameLettersSubStr = o.getMaxSameLettersSubStr(letterFlow);
System.out.println(sameLettersSubStr);
}
/**
* 校验字符串是否符合数字规范
* */
private boolean isNum(String str){
boolean result = true;
if(str.length() < 1)
return false;
for(int i = 0 ; i < str.length(); i ++){
if(str.charAt(i) < '0' || str.charAt(i) > '9')
return false;
}
return result;
}
private boolean isBinaryFlow(String binaryFlow){
boolean result = true;
if(binaryFlow.length() < 1)
return false;
for(int i = 0 ; i < binaryFlow.length(); i ++){
if(binaryFlow.charAt(i) != '0' && binaryFlow.charAt(i) != '1')
return false;
}
return result;
}
private boolean isLetterFlow(String letterFlow){
boolean result = true;
if(letterFlow.length() < 1)
return false;
for(int i = 0 ; i < letterFlow.length(); i ++){
char cur = letterFlow.charAt(i);
if(!( ('z'>= cur && cur >= 'a') || ('Z' >= cur && cur > 'A') ) )
return false;
}
return result;
}
/**
* 获取最长增长数字的子串
* */
private String getMaxLengthAddPart(String str){
str = str.trim();
if(!isNum(str))
return "";
String temp = ""+str.charAt(0);
String maxSubStr = temp;
for(int i = 1; i < str.length(); i++){
char curChar = str.charAt(i);
char lastChar = str.charAt(i-1);
if( curChar > lastChar){
temp += curChar;
if(i != (str.length()-1))
continue;//如果当前节点为最后一个节点,那么强制进入下面环节,进行
}
maxSubStr = maxSubStr.length()> temp.length() ? maxSubStr : temp;
temp = ""+curChar; //清空原数据,并从当前节点记录
}
return maxSubStr;
}
/**
* 二进制流最长字符串判定
* */
private String getMaxSameSubStr(String str){
str = str.trim();
if(!isBinaryFlow(str))
return "";
String temp = ""+str.charAt(0);
String maxSubStr = temp;
for(int i = 1; i < str.length(); i++){
char curChar = str.charAt(i);
char lastChar = str.charAt(i-1);
if( curChar == lastChar){
temp += curChar;
if(i != (str.length()-1))
continue;//如果当前节点为最后一个节点,那么强制进入下面环节,进行
}
maxSubStr = maxSubStr.length()> temp.length() ? maxSubStr : temp;
temp = ""+curChar; //清空原数据,并从当前节点记录
}
return maxSubStr;
}
/**
* 字符串的最长相同部分截取
* */
private String getMaxSameLettersSubStr(String str){
str = str.trim();
if(!isLetterFlow(str))
return "";
String temp = ""+str.charAt(0);
String maxSubStr = temp;
for(int i = 1; i < str.length(); i++){
char curChar = str.charAt(i);
char lastChar = str.charAt(i-1);
if( curChar == lastChar){
temp += curChar;
if(i != (str.length()-1))
continue;//如果当前节点为最后一个节点,那么强制进入下面环节,进行
}
maxSubStr = maxSubStr.length()> temp.length() ? maxSubStr : temp;
temp = ""+curChar; //清空原数据,并从当前节点记录
}
return maxSubStr;
}
}
运行结果如下:
2025-02-01 20:24:39
2025-02-12 03:21:37
2025-02-10 15:19:48
2025-01-28 17:58:32
2024-11-22 05:08:01
2024-09-10 08:50:00