java的ArrayList与print方法的问题

ArrayList arr = new ArrayList();
arr.add("aaa");
arr.add("bbb");
arr.add("ccc");
arr.add(10);
System.out.println(arr);
为什么结果是:[aaa, bbb, ccc, 10]
我猜测:因为print遇到ArrayList类型时会自动遍历该集合,并且调用集合的tostring方法进行打印。这里面前三个元素是String类型,调用toString()方法后打印出字符串的值,而对于int类型,调用toString方法打印出int的值。(但是都是object类型,object的toString方法不应该这样啊。)
所以到底是什么原因?

3个回答

arr重写了toString,它会输出每个元素的toString,以及逗号和方括号

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复青蛙如果: 不需要管,所有的对象都有toString
大约 3 年之前 回复
com_it
青鸟路过佳城 回复青蛙如果: 这是集合中toString()的代码 public String toString() { Iterator<E> it = iterator(); if (! it.hasNext()) return "[]"; StringBuilder sb = new StringBuilder(); sb.append('['); for (;;) { E e = it.next(); sb.append(e == this ? "(this Collection)" : e); if (! it.hasNext()) return sb.append(']').toString(); sb.append(',').append(' '); } }
大约 3 年之前 回复
u013115078
码厨frog 原来是这样啊,那么ArrayList里面的toString方法又是如何运作的呢?比如。怎么判断一个元素是String类型还是int类型,并将他们的值转换出来的?(小白求助,希望能详细解释一下,谢谢,谢谢!)
大约 3 年之前 回复

arraylist 重写了object的tostring 所以打印除arr每一个元素的tostring

里面的元素的tostring 是每一个元素各自定义的tostring 这就是java的多态
如果你再加入一个你自己定义的Person类但是没有定义tostring 那么这个Person对象的tostring 就会调用其父类object的tostring

首先理解System.out.println(Object)就能很好的理解这种情况。
public void println(Object x)打印 Object,然后终止该行。
此方法首先调用 String.valueOf(x) 获取打印对象的字符串值,
然后的行为如同先调用 print(String) 再调用 println() 一样。
参数:
x - 要打印的 Object。

---------------分割-----------------

String.valueOf(Obiect x)
public static String valueOf(Object obj)返回 Object 参数的字符串表示形式。
参数:
obj - 一个 Object。
返回:
如果参数为 null,则字符串等于 "null";否则,返回 obj.toString() 的值。
另请参见:
Object.toString()

ArrayList 里重写toString方法,所以从此回溯便可以表层的理解每一步的原理。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java ArrayList 的size值在多线程中可见性问题

# ArrayList hello! 想问下大家一个可见性的问题,如果使用ArrayList,开启两个线程,一个线程往这个集合中添加数据,另一个线程中取这个集合的size值,为什么线程中取到的值一直取不到最新的值? ```java public void testVisibility3() { List<Object> list = new ArrayList<>(); System.out.println("current list size:" + list.size()); new Thread(() -> { System.out.println("thread 1 add ...."); for (int i = 0; i < 10; i++) { list.add("index" + i); System.out.println("thread 1 add success size:" + list.size()); try { Thread.sleep(1000L); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("thread 1 add success"); }).start(); new Thread(() -> { System.out.println("thread 2 start ======="); while (list.size() < 5) { // 这里不能使用System.out.println方法来进行测试,因为该方法是线程安全的,有同步标识,这样会导致list数据重新从主内存中加载一份 // System.out.print("thread 2 read size:" + this.list.size() + "\n"); } System.out.println(); System.out.println("thread 2 end ======="); }).start(); } ``` 如果用main方法启动调用上面的方法,第二个线程一直不能结束,取不到最新的size值; # 但如果定义一个对象,对象中有int值 ```java public class Person implements Serializable { /** 年齡 */ private int age; /** * 空构造函数 */ public Person() { // } public void incrAge() { this.age++; } /** * Getter method for property <tt>age</tt>. * * @return property value of age */ public int getAge() { return this.age; } /** * Setter method for property <tt>age</tt>. * * @param age * value to be assigned to property age */ public void setAge(int age) { this.age = age; } } ``` 但是,我如果使用上面的对象,我对象中有个int值,如果我开启两个线程,一个线程对这个对象的int值赋值,另一个线程从这个对象中取这个int值,int值没有加其它的修饰符,只有个private; 但是取值的这个线程值不然等很久,就能获取到另一个线程赋的值 ```java public void testVisibility4() { Person person = new Person(); new Thread(() -> { System.out.println("thread 1 start ======= age =" + person.getAge()); while (person.getAge() != 12) { } System.out.println("thred 1 age =======" + person.getAge()); System.out.println("thread 1 end ======="); }).start(); new Thread(() -> { System.out.println("thread 2 modify ...."); for (int i = 0; i < 12; i++) { person.incrAge(); } System.out.println("thread 2 modify success"); }).start(); } ``` 上面方法运行的结果,一般都会是: ```java thread 1 start ======= age =0 thread 2 modify .... thread 2 modify success thred 1 age =======12 thread 1 end ======= ``` 请问下,这个ArrayList在多线程中这个size和一个对象的int值在多线程中它们到底是如何处理的?可见性为什么会不一样了?

java 关于将ArrayList存入文件与读取的问题

问题描述:这段代码是我未完成的主文件,本人java初学者,实在无法解决,渴求帮助。 这段程序是为了记录Task这个class并保存在timetracker.data中。程序首先要读取文件中的内容,我根据ObjectInputStream函数,想将文件内的内容的全部作为一个ArrayList整体读取出来,然后再在用户输入1时使用add()直接将新的Task添加到ArrayList中,最后在用户输入5的时候将这个ArrayList作为一个整体保存进去。以此来实现Task这个class的存取。 目前来看我的问题出在TaskList = (ArrayList<Task>)ois.readObject();这一行。 编译时会警报 未经检查的类型使用,找到java.lang.Object 需要java.util.ArrayList<Task> 我的疑问是 到底能不能通过readObject将文件内的所有内容读出,还是只能读出一个然后我的程序强行将这个Object转化成了ArrayList形式。 如果能,希望可以教我一下我写法的缺陷。 很抱歉浪费大家时间,感激不尽 import java.io.*; import java.text.*; import java.util.*; import java.lang.*; public class TimeTracker { public static void main(String[] args) throws IOException { byte[] option = new byte[100]; ArrayList<Task> TaskList = new ArrayList<Task>(); for(;;){ //nihao //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ObjectInputStream ois = null; try{ ois = new ObjectInputStream(new FileInputStream("timetracker.data")); TaskList = (ArrayList<Task>)ois.readObject(); } catch (ClassNotFoundException e){ System.out.println("(None)"); } catch (EOFException e){ // catch EOF System.out.println("have reached the end of file"); } finally{ if( ois != null ) { ois.close(); } int n = TaskList.size(); System.out.println(n); } //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ManuPrint manu = new ManuPrint(); manu.Print(); int numRead = System.in.read(option); if((char) option[0] == '1'||(char) option[0] == '2'||(char) option[0] == '3'||(char) option[0] == '4'||(char) option[0] == '5'){ if((char) option[0] == '1'){ System.out.println("Enter new task (blank line ends input, no text ends the current task):"); Date date = new Date(); SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat dt = new SimpleDateFormat("HH:mm"); //------------------------------record the last finished task //------------------------------record the last finished task // still not sloved multi lines BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = null; str=br.readLine(); // multi lines Task a = new Task((ft.format(date)),(dt.format(date)),"","",str); TaskList.add(a); } // option 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// if((char) option[0] == '5'){ FileOutputStream fout = new FileOutputStream("timetracker.data"); ObjectOutputStream out = new ObjectOutputStream(fout); try{ out.writeObject(TaskList); out.flush(); } catch(Exception e){ e.printStackTrace(); } finally{ try{ out.close(); } catch(Exception e){ e.printStackTrace(); } } System.out.print("******SEEEEEE UUUUU NEEEXT TIMEEE*********"); System.exit(0); } // option 5 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// } // if=1,2,3,4,5 else{ System.out.println("Invalid option!"); continue; } } //nihao } // main } //class

简单java ArrayList add 问题

请各位大神看看下面的代码, <br />我想把生成的120个数组放到list当中 <br />但是,后放入的替换了全面的所有数据 <br />不明所以,望说明,谢谢。 <br /><pre name="code" class="java"> package com.zhangxuan.platform.test; import java.util.ArrayList; import java.util.List; public class T { private static List&lt;int[]&gt; list = new ArrayList&lt;int[]&gt;(); public static void main(String[] args) { // 测试数据 int[] a = {0, 1, 2, 3, 4}; int[] b = new int[a.length]; sort(a, b, a.length, 0); for(int[] i : list) { for(int it : i) { System.out.print(it + " "); } System.out.println(); } } public static void sort(int[] a, int[] b, int n, int c) { if(c == n) { /* for(int i : b) { System.out.print(i + " "); } System.out.println(); */ // 把b放到list当中,但是这里就把list的所有数据替换成b了. // 所以list全部是4 3 2 1 0 了 list.add(b); return; } else { for(int i = 0; i &lt; n; i ++) { boolean f = false; for(int j = 0; j &lt; c; j ++) { if(a[i] == b[j]) { f = true; break; } } if(!f) { b[c] = a[i]; sort(a, b, n, c + 1); } } } } } </pre>

java,ArrayList,怎么在一个数组里存储多个值?

怎么在一个数组里存储多个值? 比如, string a = "xiaoming"; int age = 28; string aihao = "唱歌、跳舞。"; 把上面的值存到一个数组里 ArrayList arr = new ArrayList(); arr.add(0,咋存到这里) ArrayList arry = new ArrayList(); arry.add(0, "小明,28,1984,null"); out.print(arry.get(0).toString().split(",")[0]); 类似这种的,还有没有更好的官方用法?谢谢

Java代码ArrayList删除其中值的问题,请看下面的代码有问题么?

//删除集合中的偶数数据 List<Integer> arr = new ArrayList(); for(int i = 0; i < 20; i++){ arr.add(i); } for(int i = 0; i <arr.size() ; i++){ if(arr.get(i)%2==0){ arr.remove(i); } } for(int i = 0; i < arr.size(); i++){ System.out.print(arr.get(i)+" "); } 以上的代码是否有问题?是不是出了越界的异常?应该改成这样么? List<Integer> arr = new ArrayList(); for(int i = 0; i < 20; i++){ arr.add(i); } for(int i = 0; i <arr.size() ; i++){ if(arr.get(i)%2==0){ arr.remove(i); i--; //加上这一句是否就没问题了? } } for(int i = 0; i < arr.size(); i++){ System.out.print(arr.get(i)+" "); }

java.util.ArrayList cannot be cast to byte[]

类型不能强制转换,但是我这个并没看出来哪里需要转换,请大家帮忙看一看哪里出问题了。 我在一个activity将bitmap转为byte[]类型,装入List里面,通过gson把这个list变为json类型,再传到另一个activity,解析json数据再转为List。 代码比较长,我就不全列出了。就用log来提供内容吧。 private List<byte[]> mBitmaps = new ArrayList<>(); ...... Log.i(TAG, "getView: "+mBitmaps.get(i)); Log.i(TAG, "getView: "+mBitmaps); Log.i(TAG, "getView: "+mBitmaps.getClass()); if (mBitmaps != null) { Glide.with(mContext).load(mBitmaps.get(i)).into(viewHolder.imageView); } 打印的内容就是 getview:[... , ...] getview:[[... , ...] getView: class java.util.ArrayList 报错就是在Glide那一行, ...就省略了就是-128到128一堆数字。 还需要什么信息就说一下。

JAVA初学者练习题,求找错

``` package report5; import java.util.ArrayList; public class Student { int id; String name; ArrayList<Integer> quizResult =new ArrayList<Integer>(10) ; public Student() {} public Student( int id){ this.id=id; } public Student(int id, String name){ this.id=id; this.name=name; } public void setID(int id){ this.id=id; } public void setName(String name){ this.name=name; } void setAllResult(int a, int b, int c, int d, int e){ quizResult.add(a); quizResult.add(b); quizResult.add(c); quizResult.add(d); quizResult.add(e); } void setUpdate(int index, int value){ quizResult.set(index,value ); } int sum() { int sum=0; for(int i:quizResult) sum+=quizResult.get(i) ; return sum; } void print(){ System.out.printf("%d %s ",id,name); for(int i=0; i<quizResult.size() ;i++) System.out.printf("%d ",quizResult.get(i) ) ; System.out.printf("(Total %d,Average %d",sum(),sum()/5); } } ``` 测试class ``` package report5; public class test { static void method1() { Student aaa=new Student(); Student bbb=new Student(234567); Student ccc=new Student(345678,"hongg"); aaa.setID(123456); aaa.setName("chengwuql"); aaa.setAllResult(7, 9, 7, 9, 6); bbb.setName("kang"); bbb.setAllResult(7, 5, 1, 8, 8); ccc.setAllResult(8, 9, 8, 4, 8); aaa.print(); bbb.print(); ccc.print(); } public static void main(String[] args) { method1(); } } ``` 题目是 使用 给定的部分代码 然后完成。。。 求 aaa bbb ccc 三人五次的成绩 和平均成绩 考察 重载的构造函数 输出结果 ``` 123456 chengwuql 7 9 7 Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 7 out-of-bounds for length 5 at java.base/jdk.internal.util.Preconditions.outOfBounds(Unknown Source) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Unknown Source) at java.base/jdk.internal.util.Preconditions.checkIndex(Unknown Source) at java.base/java.util.Objects.checkIndex(Unknown Source) at java.base/java.util.ArrayList.get(Unknown Source) at report5.Student.sum(Student.java:47) at report5.Student.print(Student.java:54) at report5.test.method1(test.java:17) at report5.test.main(test.java:24) ``` 本人不太会用arraylist ,应该是这里出问题了,谢谢

arraylist的增添覆盖问题 new Student()已放到循环内 还是覆盖前边的输入怎么解决

import java.util.Scanner; import java.util.ArrayList; public class Student{ static String sNo,sSex,sName; static int sAge,sJava; //构造方法初始化成员变量 Student(String sNo,String sSex,String sName,int sAge,int sJava){ this.sNo=sNo; this.sSex=sSex; this.sName=sName; this.sAge=sAge; this.sJava=sJava; } //创建get方法 static String getNo(){ return sNo; } static String getName(){ return sName; } static String getSex(){ return sSex; } static int getAge(){ return sAge; } static int getJava(){ return sJava; } //构造一个输出方法 public String toPrint(){ return "学号:"+sNo+" "+"名字:"+sName+" "+"性别:"+sSex+" "+"年龄:"+sAge+" "+"java成绩:"+sJava; } public static void main(String[] args){ ArrayList<Student> list=new ArrayList<Student>();//构造arraylist方法 Scanner input=new Scanner(System.in); for(int i=0;i<2;i++){//循环输入学生信息 System.out.println("请输入学号:"); String no=input.next(); System.out.println("请输入名字:"); String name=input.next(); System.out.println("请输入性别:"); String sex=input.next(); System.out.println("请输入年龄:"); int age=input.nextInt(); System.out.println("请输入java成绩(整数):"); int java=input.nextInt(); Student a=new Student(no,sex,name,age,java);//将信息录入Student构造方法 list.add(a);//增添信息 } int resultsMax=0,resultsMin=list.get(0).getJava();//声明两个变量得到最大、最小成绩 int max=0,min=0;//声明两个变量,存最大小值所在的数组索引 for(int j=0;j<list.size();j++){//使用arraylist size方法判断动态数组长度 System.out.println(list.get(j).toPrint()); if(list.get(j).getJava()>resultsMax){//判断java最大数据 resultsMax=list.get(j).getJava(); max=j; } if(list.get(j).getJava()<resultsMin){//判断java最小数据 resultsMin=list.get(j).getJava(); min=j; } } System.out.println("java成绩最高的学生信息:"+list.get(max).toPrint()); System.out.println("java成绩最低的学生信息:"+list.get(min).toPrint()); } }

为什么ArrayList用set之后,运行出来是这样的?(麻烦大神帮忙解释一下,刚接触编程不太懂)

import java.util.ArrayList; public class AP01 { public static void main(String[] args) { ArrayList<String> students = new ArrayList<String>(); students.add("Alex"); students.add("Bob"); students.add("Carl"); for(int k = 0; k< students.size(); k++) { System.out.print(students.set(k, "Alex") + " "); } System.out.println(); for(String str : students) { System.out.print(str + " "); } } } Console Alex Bob Carl Alex Alex Alex

关于JAVA泛型方法的小问题

import java.util.ArrayList; public class GenericStack<E> { ArrayList<E> list = new ArrayList<>(); public int getSize(){ return list.size(); } public E peek(){ return list.get(list.size() - 1); } public void push(E e){ list.add(e); } public E pop(){ E e = list.get(list.size() - 1); list.remove(getSize() - 1); return e; } public boolean isEmpty(){ return list.isEmpty(); } } 为什么像push方法不是一个泛型方法而void前面不要加上<E>呢?到底什么才 是泛型方法啊?

重写 compareTo后,ArrayList.sort可以升序排列,为什么一般不改成降序呢 ?

package interfaces; import java.util.*; //实例数组排序:员工数组排序 /** * This program demonstrates the use of the Comparable interface. * @version 1.30 2004-02-27 * @author Cay Horstmann */ public class EmployeeSortTest { public static void main(String[] args) { Employee[] staff = new Employee[3]; staff[0] = new Employee("Harry Hacker", 35000); staff[1] = new Employee("Carl Cracker", 75000); staff[2] = new Employee("Tony Tester", 38000); Arrays.sort(staff);//结合重写后的compareTo方法,将类按照工资高低升序排列 // print out information about all Employee objects for (Employee e : staff) System.out.println("name=" + e.getName() + ",salary=" + e.getSalary()); } } class Employee implements Comparable<Employee> { private String name; private double salary; public Employee(String n, double s) { name = n; salary = s; } public String getName() { return name; } public double getSalary() { return salary; } public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100; salary += raise; } /** * Compares employees by salary * @param other another Employee object * @return a negative value if this employee has a lower salary than * otherObject, 0 if the salaries are the same, a positive value otherwise */ public int compareTo(Employee other) { if (salary < other.salary) return -1;//if (salary < other.salary) return -1; if (salary > other.salary) return 1;//if (salary > other.salary) return 1; return 0; //若上面两句改写成这样,那输出结果就会降序排列,也不会报错,为什么不这样写呢? } } 问题在注释中写了

java反射,自动调用方法,方法的返回值类型是不一定的,怎么得到方法的返回值类型的原来的类型!

java反射动态获取方法的返回值类型? ![图片说明](https://img-ask.csdn.net/upload/201811/08/1541668477_850877.png) ![图片说明](https://img-ask.csdn.net/upload/201811/08/1541668489_297052.png) 代码如下: ``` package javase; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; public class Person { static List<String> list; public void eat() { System.out.println("我是eat()函数"); } public String sayHello(String name) { return "hello,我是" + name + "!"; } public String jump(String name, int age) { return "hello,我是" + name + ",我今年" + age + "岁了!"; } public List<String> returnList() { // List<String> list = new ArrayList<String>(); list = new ArrayList<String>(); list.add("令狐冲"); list.add("韦小宝"); list.add("张无忌"); list.add("杨过"); list.add("乔峰"); return list; } public static void main(String[] args) throws Exception { Class cla = Class.forName("javase.Person"); Constructor constructor = cla.getConstructor(); Object obj = constructor.newInstance(); Method[] declaredMethods = cla.getDeclaredMethods(); for (Method method : declaredMethods) { System.out.println(method.getName() + " / " + method); Class[] parameterTypes = method.getParameterTypes(); if (parameterTypes.length > 0) { System.out.print(method.getName() + "方法的参数类型:"); } else { System.out.print(method.getName() + "方法没有参数"); } for (Class parameterType : parameterTypes) { System.out.print(parameterType.getName() + "\t"); } System.out.println("\n--------------------------------------------------"); } System.out.println("******************************"); // 使用反射,动态调用对象的函数 Method method = cla.getMethod("eat"); Object returnValue = method.invoke(obj); System.out.println(returnValue); // 动态调用对象的函数 Method method2 = cla.getMethod("sayHello", String.class); Object returnValue2 = method2.invoke(obj, "令狐冲"); System.out.println(returnValue2); // 动态调用对象的函数 Method method3 = cla.getMethod("jump", String.class, int.class); Object returnValue3 = method3.invoke(obj, "令狐冲", 16); System.out.println(returnValue3); // 动态调用对象的函数 Method method4 = cla.getMethod("returnList"); Type returnType = method4.getGenericReturnType(); System.out.println(method4.getName() + "方法的返回值类型=" + returnType); /* * returnList方法返回值类型是List<String>,所以returnValue4变量原本的类型是List<String> * 还有一个问题值得我们思考,每个方法的返回值类型都可能不一样,我们在利用反射调用完invoke()方法后,得到的返回值类 * 型都是Object,怎么转换回每个方法它自己的原本的返回值类型呢? */ Object returnValue4 = method4.invoke(obj); System.out.println("方法的返回值类型:" + method4.getReturnType().cast(method4.invoke(obj))); System.out.println(returnValue4 + " / " + returnValue4.getClass()); for (String str : list) { System.out.println("利用反射自动调用完returnList方法后集合元素" + str); } List<String> returnValue5 = (List<String>) method4.invoke(obj); for (String string : returnValue5) { System.out.println(string); } } } ``` 一言以蔽之,我就是想做到如下的代码这样: ``` Method method4 = cla.getMethod("returnList"); //我想下面的Object变成动态数据类型(即returnList方法的返回值类型) Object returnValue4 = method4.invoke(obj); //有没有可能变成下面这样 method4.getReturnType() returnValue4 = (method4.getReturnType())method4.invoke(obj); //到时候就可以拿到每个方法的具体的返回值,方法返回Map,我就可以拿到Map,方法返回int,我就拿到int,方法返回String,我就拿到String,方法返回List<Student>,我就可以拿到List<Student> ``` 运行结果截图: ![图片说明](https://img-ask.csdn.net/upload/201811/08/1541668669_521947.png) ![图片说明](https://img-ask.csdn.net/upload/201811/08/1541668680_381683.png)

Runnable 中抛出java.lang.ArrayIndexOutOfBoundsException: -1

[已解决] SimpleDateFormat.format并发调用会有问题private SimpleDateFormat.StringBuffer format(Date date, StringBuffer toAppendTo, FieldDelegate delegate) 里面用了calendar.setTime(date);这玩意是全局的,后面还会调用它,所以并发时候会出问题。 Random中protected Random.next(int bits);采用AtomicLong的CAS操作并发时候不会出问题。 ------------------------------------------------------------------------------ 每个Task有自己的ArrayList实例,在多线程情况下每个ArrayList实例应该不存在并发写入啊,为没什么还报ArrayIndexOutOfBoundsException: -1 求助大神,网上找了好久没结果。 ``` import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import static java.lang.System.out; public class TestArrayList { public static void main(String[] args){ TestArrayList t= new TestArrayList(); t.testInsertRows(); } private static int millisecondOf1Day= 1000*3600*24; private static int millisecondOf5Min= 1000*60*5; private static final SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private final ExecutorService pool= Executors.newFixedThreadPool(8); public void testInsertRows(){ Random random= new Random(); int taskId= 0; for(int i=0; i< 8; i++){ taskId++; pool.submit(new Task(taskId, 10000, null)); } out.println("all submited!"); } static class Task implements Runnable{ private Integer id; private List<Bean> list; private int rowCount; private int count=0; private Random random; public Task(Integer id, Integer rowCount, Random random){ this.id= id; this.list= new ArrayList<>(rowCount+1); this.rowCount= rowCount; // this.random= random; this.random= new Random(); } @Override public void run() { out.println("task:"+id+" is running! "+Thread.currentThread()); try{ for(int j=0; j< rowCount; j++ ){ Long randomTime= random.nextLong(); Date validityDate= new Date(randomTime- millisecondOf1Day), startDate= new Date(randomTime), endDate= new Date(randomTime+ 2*millisecondOf1Day); Bean bean = new Bean(); bean.setField0("K0000033"); bean.setField1("0001"); bean.setField2(sdf.format(validityDate)); bean.setField3(new Double(0.0).toString()); bean.setField4(sdf.format(startDate)); bean.setField5(sdf.format(endDate)); list.add(bean); } out.println("list is prepared in thread:"+id); Thread.sleep(millisecondOf5Min);// out.println(count+" rows has been inserted in thread:"+id); }catch (Exception e) { synchronized (out) { out.println("task:"+id+" in error"+Thread.currentThread()); e.printStackTrace(); out.println("task:"+id+" error info print completed"); } } } } } class Bean{ private String field0; private String field1; private String field2; private String field3; private String field4; private String field5; private String field6; /** * @return the field0 */ public String getField0() { return field0; } /** * @param field0 the field0 to set */ public void setField0(String field0) { this.field0 = field0; } /** * @return the field1 */ public String getField1() { return field1; } /** * @param field1 the field1 to set */ public void setField1(String field1) { this.field1 = field1; } /** * @return the field2 */ public String getField2() { return field2; } /** * @param field2 the field2 to set */ public void setField2(String field2) { this.field2 = field2; } /** * @return the field3 */ public String getField3() { return field3; } /** * @param field3 the field3 to set */ public void setField3(String field3) { this.field3 = field3; } /** * @return the field4 */ public String getField4() { return field4; } /** * @param field4 the field4 to set */ public void setField4(String field4) { this.field4 = field4; } /** * @return the field5 */ public String getField5() { return field5; } /** * @param field5 the field5 to set */ public void setField5(String field5) { this.field5 = field5; } /** * @return the field6 */ public String getField6() { return field6; } /** * @param field6 the field6 to set */ public void setField6(String field6) { this.field6 = field6; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "Bean [field0=" + field0 + ", field1=" + field1 + ", field2=" + field2 + ", field3=" + field3 + ", field4=" + field4 + ", field5=" + field5 + ", field6=" + field6 + "]"; } } ``` task:1 is running! Thread[pool-1-thread-1,5,main] task:4 is running! Thread[pool-1-thread-4,5,main] task:3 is running! Thread[pool-1-thread-3,5,main] task:2 is running! Thread[pool-1-thread-2,5,main] task:5 is running! Thread[pool-1-thread-5,5,main] task:6 is running! Thread[pool-1-thread-6,5,main] all submited! task:7 is running! Thread[pool-1-thread-7,5,main] task:8 is running! Thread[pool-1-thread-8,5,main] task:7 in errorThread[pool-1-thread-7,5,main] java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.Calendar.getDisplayName(Unknown Source) at java.text.SimpleDateFormat.subFormat(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.DateFormat.format(Unknown Source) at com.haimian.test.concurrent.TestArrayList$Task.run(TestArrayList.java:64) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) task:7 error info print completed task:8 in errorThread[pool-1-thread-8,5,main] java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.Calendar.getDisplayName(Unknown Source) at java.text.SimpleDateFormat.subFormat(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.DateFormat.format(Unknown Source) at com.haimian.test.concurrent.TestArrayList$Task.run(TestArrayList.java:65) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) task:8 error info print completed task:4 in errorThread[pool-1-thread-4,5,main] java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.Calendar.getDisplayName(Unknown Source) at java.text.SimpleDateFormat.subFormat(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.DateFormat.format(Unknown Source) at com.haimian.test.concurrent.TestArrayList$Task.run(TestArrayList.java:62) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) task:4 error info print completed task:1 in errorThread[pool-1-thread-1,5,main] java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.Calendar.getDisplayName(Unknown Source) at java.text.SimpleDateFormat.subFormat(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.DateFormat.format(Unknown Source) at com.haimian.test.concurrent.TestArrayList$Task.run(TestArrayList.java:64) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) task:1 error info print completed task:5 in errorThread[pool-1-thread-5,5,main] java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.Calendar.getDisplayName(Unknown Source) at java.text.SimpleDateFormat.subFormat(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.DateFormat.format(Unknown Source) at com.haimian.test.concurrent.TestArrayList$Task.run(TestArrayList.java:65) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) task:5 error info print completed task:3 in errorThread[pool-1-thread-3,5,main] java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.Calendar.getDisplayName(Unknown Source) at java.text.SimpleDateFormat.subFormat(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.DateFormat.format(Unknown Source) at com.haimian.test.concurrent.TestArrayList$Task.run(TestArrayList.java:64) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) task:3 error info print completed task:6 in errorThread[pool-1-thread-6,5,main] java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.Calendar.getDisplayName(Unknown Source) at java.text.SimpleDateFormat.subFormat(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.SimpleDateFormat.format(Unknown Source) at java.text.DateFormat.format(Unknown Source) at com.haimian.test.concurrent.TestArrayList$Task.run(TestArrayList.java:64) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) task:6 error info print completed list is prepared in thread:2

求助,jsp里面java的类型转换问题

从dao里面返回的ArrayList转换成自定义的vo时报错,不知道怎么办了(我java没怎么学) 或者可不可以dao直接返回自定义vo login.jsp ``` <%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="UTF-8"%> <%@ page import="vo.Admin,dao.AdminDao" %> <html> <body> <form action = "login.jsp"> 账号:<input type = "text" name = "adminname"><br> 密码:<input type = "password" name = "password"><br> <input type = "submit" value = "登录"> </form> <% String adminname = request.getParameter("adminname"); String password = request.getParameter("password"); if(adminname!=null&&password!=null){ AdminDao admindao=new AdminDao(); System.out.print("test"); Admin admin=(Admin)admindao.queryAllAdmins(adminname); if(password.equals(admin.getPassword())){ response.sendRedirect("JxglSys/servlets/InitServlet"); } } %> </body> </html> ``` AdminDao.java ``` package dao; import java.sql.*; import java.util.ArrayList; import vo.Admin; public class AdminDao { public ArrayList queryAllAdmins(String adminname) throws Exception{ ArrayList admins= new ArrayList(); try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String url = "jdbc:sqlserver://localhost:1433;DatabaseName=JXGL"; Connection conn = DriverManager.getConnection(url,"sa","nmybj.19981227"); System.out.print(adminname); String sql = "SELECT ADMINNAME,PASSWORD FROM ADMIN WHERE ADMINNAME = '"+adminname+"'"; Statement stat = conn.createStatement(); ResultSet rs = stat.executeQuery(sql); while(rs.next()) { Admin admin = new Admin(); admin.setAdminname(rs.getString("ADMINNAME")); admin.setPassword(rs.getString("PASSWORD")); admins.add(admin); } rs.close(); stat.close(); } catch (SQLException e) { //e.printStackTrace(); System.out.print("Database error"); } return admins; } } ``` Admin.java ``` package vo; public class Admin { private String adminname; private String password; public String getAdminname() { return adminname; } public void setAdminname(String adminname) { this.adminname = adminname; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } ```

array数组的问题,求大佬指点

public class Main { public static double average(double[] array) { double temp = 0; double sum = 0; for (int i = 0; i < array.length; i++) { sum = sum + array[i]; } temp = sum / array.length; return temp; } public static void main(String[] args) { File file = new File("C:/Users/15002/Desktop/文件/gongzuo.xlsx"); ArrayList<ArrayList<Object>> result = ExcelUtil.readExcel(file); ArrayList<Double> result2 = null; double rand[] = new double[50]; double av; java.util.Random r = new java.util.Random(); for (int j = 0; j < 10000; j++) { for (int i = 0; i < 50; i++) { try { rand[i] = Double.valueOf(result.get(r.nextInt(62080)).get(0).toString()).doubleValue(); } catch (NumberFormatException e) { e.printStackTrace(); } System.out.println(rand[i]); av = average(rand); System.out.print("平均值为:" + av); result2.add(av); } } } } 运行结果: 12.0 Exception in thread "main" 平均值为:0.24java.lang.NullPointerException at Main.main(Main.java:35)

JAVA中画的图形不能显示,想知道问题出在哪?

package ObjectPrinciple; import java.awt.EventQueue; import javax.swing.ButtonGroup; import javax.swing.JFrame; import javax.swing.JToolBar; import java.awt.BorderLayout; import java.awt.Button; import javax.swing.JPanel; import javax.swing.JRadioButton; import java.awt.event.ItemListener; import java.awt.event.ItemEvent; import javax.swing.JPanel; import javax.swing.JSplitPane; import javax.swing.JList; public class DrawingBroad implements ItemListener{ private JFrame frame; private Canvas canvas; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { DrawingBroad window = new DrawingBroad(); window.frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } public void itemStateChanged(ItemEvent e) { JRadioButton rdb; rdb=(JRadioButton) e.getSource();//把获得的来源转换成单选按钮的类型 //强制转换 事件是由哪个对象发出来的 if(rdb.isSelected())//保证其中有一个按钮是被选中的 { if (rdb.getText()=="Lines") {//也就是按钮的名称,做到匹配 canvas.setTodoAction(0);//在中做得事件进行编号 } else if (rdb.getText()=="rectangle") { canvas.setTodoAction(1); } else if (rdb.getText()=="circle") { canvas.setTodoAction(2); }//可以在此添加代码,新按钮 else if (rdb.getText()=="move") { canvas.setTodoAction(100); } } } /** * Create the application. */ public DrawingBroad() {//构造函数, initialize(); } /** * Initialize the contents of the frame. */ private void initialize() { frame = new JFrame(); frame.setBounds(100, 100, 800, 600); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JSplitPane splitPane = new JSplitPane(); splitPane.setDividerLocation(160); frame.getContentPane().add(splitPane, BorderLayout.CENTER); canvas= new Canvas(); splitPane.setRightComponent(canvas); JList<String> list = new JList<String>(); splitPane.setLeftComponent(list); canvas.setLayers(list); JToolBar toolBar = new JToolBar(); frame.getContentPane().add(toolBar, BorderLayout.NORTH); JRadioButton rdbtnLines = new JRadioButton("lines"); rdbtnLines.setSelected(true);//首先选择一个按钮 rdbtnLines.addItemListener(this); toolBar.add(rdbtnLines); JRadioButton rdbtnRectangle = new JRadioButton("rectangle"); rdbtnRectangle.addItemListener(this); toolBar.add(rdbtnRectangle); JRadioButton rdbtnMove = new JRadioButton("move"); rdbtnMove.addItemListener(this); toolBar.add(rdbtnMove); JRadioButton rdbtnCircle = new JRadioButton("circle"); rdbtnCircle.addItemListener(this); toolBar.add(rdbtnCircle); ButtonGroup bg=new ButtonGroup(); bg.add(rdbtnLines); bg.add(rdbtnRectangle); bg.add(rdbtnMove); bg.add(rdbtnCircle); } } package ObjectPrinciple; import java.awt.Color; import java.awt.Graphics; import java.awt.Point; import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.util.ArrayList; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.event.MouseInputAdapter; import javax.swing.event.MouseInputListener; public class Canvas extends JPanel { private int todoAction; private Rectangle scope; private ArrayList<Shape> shapes; private JList<String > layers; public void setLayers(JList<String> layers) { this.layers = layers; } public void setTodoAction(int todoAction) { this.todoAction = todoAction; } public Canvas() { shapes= new ArrayList<Shape>(); addMouseMotionListener(mouseHandler); addMouseListener(mouseHandler); } public void paintShape(Shape s) { // TODO Auto-generated method stub shapes.add(s); String[] strings = new String[shapes.size()]; int i=0; for (Shape shape:shapes) { strings[i++]=shape.toString(); } layers.setListData(strings); repaint(); } private MouseInputListener mouseHandler = new MouseInputAdapter() { Point startPoint; @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub //初始化 startPoint = e.getPoint(); scope = new Rectangle(); } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub //消除矩形框 if(todoAction==100) { Moving m = shapes.get(layers.getSelectedIndex()); m.move(e.getPoint().x, e.getPoint().y); scope = null; repaint(); } else { setScope(startPoint,e.getPoint()); if(scope.width > 0||scope.height>0) if(todoAction==0) { MyLine line = new MyLine(); line.setShape(scope.x, scope.y, scope.width, scope.height, 0, "line"); paintShape(line); }else if(todoAction == 1) { MyRectangle rectangle = new MyRectangle(); rectangle.setShape(scope.x, scope.y, scope.width, scope.height, 1, "rectangle"); paintShape(rectangle); }else if (todoAction == 2) { Circle circle= new Circle(); circle.setShape(scope.x, scope.y, scope.width, scope.height, 2, "circle"); paintShape(circle); } scope=null; repaint(); } } @Override public void mouseDragged(MouseEvent e) { // TODO Auto-generated method stub if(scope==null) { setScope(startPoint, e.getPoint()); } repaint(); } private void setScope(Point starPoint,Point endPoint) { int x=Math.min(startPoint.x, endPoint.x); int y=Math.min(startPoint.y, endPoint.y); int w=Math.abs(startPoint.x - endPoint.x); int h=Math.abs(startPoint.y - endPoint.y); scope.setBounds(x,y,w,h); } }; @Override public void print(Graphics g) { // TODO Auto-generated method stub super.print(g); g.setColor(Color.BLACK); if(scope != null) g.drawRect(scope.x, scope.y, scope.width,scope.height); //需要一个队列,需要把画的图形加到队列,调用每个元素的drawingshape方法 for(Drawing d:shapes) { d.drawingShape(g); } } } package ObjectPrinciple; import java.awt.Graphics; public interface Drawing { public void drawingShape(Graphics g); } package ObjectPrinciple; public interface Moving { public void move(int x,int y); } package ObjectPrinciple; public abstract class Shape implements Drawing,Moving{ //位置 int x,y; //宽度,高度 int width,height; int shapetype; String shapename; public void setShape(int x, int y, int width, int height, int shapetype, String shapename) { //super(); this.x = x; this.y = y; this.width = width; this.height = height; this.shapetype = shapetype; this.shapename = shapename; } @Override public void move(int x, int y) { // TODO Auto-generated method stub this.x = x; this.y = y; } @Override public String toString() { return shapename; } } package ObjectPrinciple; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.Line2D; public class MyLine extends Shape { public void drawingShape(Graphics g) { Graphics2D g2d=(Graphics2D) g; Line2D line2d = new Line2D.Double(x,y,x+width,y+height); g2d.draw(line2d); } } package ObjectPrinciple; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.geom.Line2D; import java.awt.geom.Rectangle2D; public class MyRectangle extends Shape { @Override public void drawingShape(Graphics g) { // TODO Auto-generated method stub Graphics2D g2d=(Graphics2D) g; //Rectangle2D rect = new Line2D Rectangle2D rect = new Rectangle2D.Double(x,y,x+width,y+height); g2d.draw(rect); } }

java输入输出流问题readline

public class server { public static void main(String[] args) throws IOException{ int portNumber = 12009; ServerSocket serverSocket = null; try{ serverSocket = new ServerSocket(portNumber); Socket clientSocket = serverSocket.accept(); System.out.println("client comes in," + clientSocket.getInetAddress()); BufferedReader in = new BufferedReader (new InputStreamReader( clientSocket.getInputStream())); String inputLine =null; inputLine = in.readLine();//代码被卡在这个地方,执行不了。 System.out.println("client comes in," + clientSocket.getInetAddress()); System.out.println(inputLine == null ? 1 : 0); while((inputLine = in.readLine()) != null){ System.out.println(inputLine); if(inputLine.equals("1")) { new ServerTest2(); } System.out.println("recv from client:" + inputLine); } }catch(Exception e){ e.printStackTrace(); }finally{ if(serverSocket!=null) serverSocket.close(); } } } 这是一个server程序,想读出来发过来的1,但是读不出来,上面那句println读不出来

Java对象流读取时出错

import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.OutputStream; import java.io.Serializable; import java.net.ServerSocket; import java.net.Socket; public class sever { public static void main(String[] args) throws ClassNotFoundException { Socket socket; InputStream is; ObjectInputStream ois; FileOutputStream fos; File file; Object object; User user=null; try { ServerSocket ss=new ServerSocket(9999); socket=ss.accept();System.out.print("hh"); is=socket.getInputStream(); ois=new ObjectInputStream(is); user=(User)ois.readObject(); 这一行有错误。 file=new File("C:/Users/lenovo/Desktop/gg1/a.mp4"); fos=new FileOutputStream(file); while(true){ fos.write(user.getBytes(), 0,user.getBytes().length); fos.flush(); } } catch (IOException e) { } } } class User implements Serializable{ private static final long serialVersionUID = 1L; private byte[] bytes=new byte[1024]; public byte[] getBytes() { return bytes; } public void setBytes(byte[] bytes) { this.bytes = bytes; } } 这个是服务器端,在从对象流中读取对象的时候报错了(错误的地方上面有标识) 错误提示: java.lang.ClassNotFoundException 请求路过的各位大神解答一下

ArrayList集合中的问题

package com.StuInfo; import java.util.*; public class Test { static ArrayList<Students> list=new ArrayList<Students>(); static Scanner input=new Scanner(System.in); public static void main(String[] args) { manageLogin(); } // 系统菜单 public static void manageLogin() { System.out.println("学员信息管理信统"); System.out.println("============"); System.out.println("1.录入学员信息"); System.out.println("2.根据学号查询学员信息"); System.out.println("3.修改学员信息"); System.out.println("4.根据学号删除学员信息"); System.out.println("5.统计学员平均考试成绩"); System.out.println("6.退出系统"); System.out.println("请输入菜单项:"); int num=input.nextInt(); switch(num){ case 1: addStu();break; case 2:checkById();break; case 3:update(); break; case 4:delete(); break; case 5: avg();break; case 6:exit(); break; } } //录入学员信息 public static void addStu(){ String answer=""; do{ answer="y"; Students stu=new Students(); System.out.print("请输入学生的学号: "); String stuid=input.next(); System.out.println("请输入学生的姓名:"); String stuname=input.next(); System.out.println("请输入学生的年龄:"); int age=input.nextInt(); System.out.println("请输入学生的成绩"); int score=input.nextInt(); if(list.isEmpty()){ stu.setId(stuid); stu.setName(stuname); stu.setAge(age); stu.setScore(score); list.add(stu); System.out.println("录入成功!"); manageLogin(); }else if(getById(stuid)==null){ stu.setId(stuid); stu.setName(stuname); stu.setAge(age); stu.setScore(score); list.add(stu); System.out.println("录入成功!"); manageLogin(); }else{ System.out.println("此学生已经存在!"); manageLogin(); } System.out.println("你是否要继续选择操作?y/n"); answer=input.next(); }while(answer.equals("y")); } //根据学号查询学员信息 public static void checkById(){ Students stu=new Students(); System.out.print("请输入您要查询学生的学号:"); String stuid=input.next(); Students s=getById(stuid); if(list.isEmpty()){ System.out.println("该学生不存在"); manageLogin(); }else if(s!=null){ Students ww=getById(stuid); System.out.println("该学员信息为:\n"); System.out.println("学号:"+ww.getAge()); System.out.println("姓名:"+ww.getName()); System.out.println("年龄:"+ww.getAge()); System.out.println("成绩:"+ww.getScore()); manageLogin(); } } //修改学员信息 public static void update(){ System.out.print("请输入您要修改学生的学号:"); int stuid=input.nextInt(); Students s=getById(stuid); //此行中getById方法报错,怎么回事? if(list.isEmpty()){ System.out.println("无学生信息!"); }else if(s!=null){ System.out.println("改后姓名:"); String name=input.next(); System.out.println("改后年龄:"); int age=input.nextInt(); System.out.println("改后成绩:"); int score=input.nextInt(); s.setName(name); s.setAge(age); s.setScore(score); System.out.println("修改成功!"); manageLogin(); }else{ System.out.println("该学生不存在!"); manageLogin(); } } //根据学号删除学员信息 public static void delete() { System.out.println("请输入所要删除的学号:"); String stuid=input.next(); Students s=getById(stuid); if(list.isEmpty()){ System.out.println("尚未存入信息!"); manageLogin(); }else if(s!=null){ list.remove(s); System.out.println("删除成功"); manageLogin(); }else{ System.out.println("该学生不存在!"); manageLogin(); } } //统计学员平均考试成绩 public static void avg(){ System.out.println("平均成绩为:"); int num=list.size(); int sun=0; if(list.isEmpty()){ System.out.println("未录入学生的信息!"); }else{ for(Students s:list){ //此行s:list 什么意思? sun+=s.getScore(); } System.out.println(sun/num); manageLogin(); } } //退出系统 public static void exit(){ System.out.println("你确定要退出系统吗?"+"y/n"); String answer=input.next(); if(answer.equalsIgnoreCase("y")){ System.exit(0); }else{ manageLogin(); } } public static Students getById(String id){ for(Students s:list){ if(s.getId().equals(id)){ return s; } } return null; } }

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

Vue + Spring Boot 项目实战(十九):Web 项目优化解决方案

快来一起探索如何打脸我们的破项目,兄弟姐妹们把害怕打在公屏上!

你连存活到JDK8中著名的Bug都不知道,我怎么敢给你加薪

CopyOnWriteArrayList.java和ArrayList.java,这2个类的构造函数,注释中有一句话 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public ArrayList(Collection&lt;? ...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解!

CSDN:因博主近期注重写专栏文章(已超过150篇),订阅博主专栏人数在突增,近期很有可能提高专栏价格(已订阅的不受影响),提前声明,敬请理解! 目录 博客声明 大数据了解博主粉丝 博主的粉丝群体画像 粉丝群体性别比例、年龄分布 粉丝群体学历分布、职业分布、行业分布 国内、国外粉丝群体地域分布 博主的近期访问每日增量、粉丝每日增量 博客声明 因近期博主写专栏的文章越来越多,也越来越精细,逐步优化文章。因此,最近一段时间,订阅博主专栏的人数增长也非常快,并且专栏价

一个HashMap跟面试官扯了半个小时

一个HashMap能跟面试官扯上半个小时 关注 安琪拉的博客 1.回复面试领取面试资料 2.回复书籍领取技术电子书 3.回复交流领取技术电子书 前言 HashMap应该算是Java后端工程师面试的必问题,因为其中的知识点太多,很适合用来考察面试者的Java基础。 开场 面试官: 你先自我介绍一下吧! 安琪拉: 我是安琪拉,草丛三婊之一,最强中单(钟馗不服)!哦,不对,串场了,我是**,目...

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

记录下入职中软一个月(外包华为)

我在年前从上一家公司离职,没想到过年期间疫情爆发,我也被困在家里,在家呆着的日子让人很焦躁,于是我疯狂的投简历,看面试题,希望可以进大公司去看看。 我也有幸面试了我觉得还挺大的公司的(虽然不是bat之类的大厂,但是作为一名二本计算机专业刚毕业的大学生bat那些大厂我连投简历的勇气都没有),最后选择了中软,我知道这是一家外包公司,待遇各方面甚至不如我的上一家公司,但是对我而言这可是外包华为,能...

面试:第十六章:Java中级开发

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

培训班出来的人后来都怎么样了?(二)

接着上回说,培训班学习生涯结束了。后面每天就是无休止的背面试题,不是没有头脑的背,培训公司还是有方法的,现在回想当时背的面试题好像都用上了,也被问到了。回头找找面试题,当时都是打印下来天天看,天天背。 不理解呢也要背,面试造飞机,上班拧螺丝。班里的同学开始四处投简历面试了,很快就有面试成功的,刚开始一个,然后越来越多。不知道是什么原因,尝到胜利果实的童鞋,不满足于自己通过的公司,嫌薪水要少了,选择...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

工作八年,月薪60K,裸辞两个月,投简历投到怀疑人生!

近日,有网友在某职场社交平台吐槽,自己裸辞两个月了,但是找工作却让自己的心态都要崩溃了,全部无果,不是已查看无回音,就是已查看不符合。 “工作八年,两年一跳,裸辞两个月了,之前月薪60K,最近找工作找的心态崩了!所有招聘工具都用了,全部无果,不是已查看无回音,就是已查看不符合。进头条,滴滴之类的大厂很难吗???!!!投简历投的开始怀疑人生了!希望 可以收到大厂offer” 先来看看网...

大牛都会用的IDEA调试技巧!!!

导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点...

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

97年世界黑客编程大赛冠军作品(大小仅为16KB),惊艳世界的编程巨作

这是世界编程大赛第一名作品(97年Mekka ’97 4K Intro比赛)汇编语言所写。 整个文件只有4095个字节, 大小仅仅为16KB! 不仅实现了3D动画的效果!还有一段震撼人心的背景音乐!!! 内容无法以言语形容,实在太强大! 下面是代码,具体操作看最后! @echo off more +1 %~s0|debug e100 33 f6 bf 0 20 b5 10 f3 a5...

程序员是做全栈工程师好?还是专注一个领域好?

昨天,有位大一的同学私信我,说他要做全栈工程师。 我一听,这不害了孩子么,必须制止啊。 谁知,讲到最后,更确定了他做全栈程序员的梦想。 但凡做全栈工程师的,要么很惨,要么很牛! 但凡很牛的,绝不是一开始就是做全栈的! 全栈工程师听起来好听,但绝没有你想象的那么简单。 今天听我来给你唠,记得帮我点赞哦。 一、全栈工程师的职责 如果你学习编程的目的只是玩玩,那随意,想怎么学怎么学。...

不要再到处使用 === 了

我们知道现在的开发人员都使用 === 来代替 ==,为什么呢?我在网上看到的大多数教程都认为,要预测 JavaScript 强制转换是如何工作这太复杂了,因此建议总是使用===。这些都...

什么是a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站?00后的世界我不懂!

A站 AcFun弹幕视频网,简称“A站”,成立于2007年6月,取意于Anime Comic Fun,是中国大陆第一家弹幕视频网站。A站以视频为载体,逐步发展出基于原生内容二次创作的完整生态,拥有高质量互动弹幕,是中国弹幕文化的发源地;拥有大量超粘性的用户群体,产生输出了金坷垃、鬼畜全明星、我的滑板鞋、小苹果等大量网络流行文化,也是中国二次元文化的发源地。 B站 全称“哔哩哔哩(bilibili...

十个摸鱼,哦,不对,是炫酷(可以玩一整天)的网站!!!

文章目录前言正文**1、Kaspersky Cyberthreat real-time map****2、Finding Home****3、Silk – Interactive Generative Art****4、Liquid Particles 3D****5、WINDOWS93****6、Staggering Beauty****7、Ostagram图片生成器网址****8、全历史网址*...

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

用了这个 IDE 插件,5分钟解决前后端联调!

点击上方蓝色“程序猿DD”,选择“设为星标”回复“资源”获取独家整理的学习资料!作者 |李海庆我是一个 Web 开发前端工程师,受到疫情影响,今天是我在家办公的第78天。开发了两周,...

大厂的 404 页面都长啥样?最后一个笑了...

每天浏览各大网站,难免会碰到404页面啊。你注意过404页面么?猿妹搜罗来了下面这些知名网站的404页面,以供大家欣赏,看看哪个网站更有创意: 正在上传…重新上传取消 腾讯 正在上传…重新上传取消 网易 淘宝 百度 新浪微博 正在上传…重新上传取消 新浪 京东 优酷 腾讯视频 搜...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

Java14 新特性解读

Java14 已于 2020 年 3 月 17 号发布,官方特性解读在这里:https://openjdk.java.net/projects/jdk/14/以下是个人对于特性的中文式...

前端还能这么玩?(女朋友生日,用前端写了一个好玩的送给了她,高兴坏了)

前端还能这么玩?(女朋友生日,用前端写了一个好玩的送给了她,高兴坏了)

爬虫(101)爬点重口味的

小弟最近在学校无聊的很哪,浏览网页突然看到一张图片,都快流鼻血。。。然后小弟冥思苦想,得干一点有趣的事情python 爬虫库安装https://s.taobao.com/api?_ks...

工作两年简历写成这样,谁要你呀!

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获! 一、前言 最近有伙伴问小傅哥,我的简历怎么投递了都没有反应,心里慌的很呀。 工作两年了目前的公司没有什么大项目,整天的维护别人的代码,有坑也不让重构,都烦死了。荒废我一身技能无处施展,投递的简历也没人看。我是不动物园里的猩猩,狒狒了! 我要加班,我要996,我要疯狂编码,求给我个机会… ...

相关热词 c#跨线程停止timer c#批量写入sql数据库 c# 自动安装浏览器 c#语言基础考试题 c# 偏移量打印是什么 c# 绘制曲线图 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行
立即提问