急!求教Java高手!以下是我的Java代码,我在注释中写明了我的想法,和问题,请高手指点!谢谢!
//这是orcale jdk7的源码,我加了点注释,看明白了你就知道remove是如何工作的了
public E remove(int index) {
rangeCheck(index); // 检查给的index是否合法
modCount++;
E oldValue = elementData(index); //取出下标对应的对象
int numMoved = size - index - 1; // 计算需要移动的位数
if (numMoved > 0)
System.arraycopy(elementData, index+1, elementData, index,
numMoved); //将后面的所有元素都向前移动一位
elementData[--size] = null; // clear to let GC do its work,将最后一位赋值为null以便垃圾回 // 收器回收
return oldValue;
}
第二题
public class Personnel {
private String name;
private int age;
private String sex;
public Personnel(){}
public Personnel(String name,int age,String sex){
this.name=name;
this.age=age;
this.sex=sex;
}
public Personnel(String name,int age){
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public void print(){
System.out.println(this.toString());
}
@Override
public String toString() {
return "姓名:"+name+"
"+"性别:"+sex+"
"+"年龄:"+age;
}
}
public class Manager extends Personnel{
private String position;
private float yearSalary;
//无参构造函数
public Manager() {
}
//姓名和年龄的构造函数
public Manager(String name, int age) {
super(name, age);
}
//全部属性的构造函数
public Manager(String name, int age, String sex,String position,float yearSalary) {
super(name, age, sex);
this.position=position;
this.yearSalary=yearSalary;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
public float getYearSalary() {
return yearSalary;
}
public void setYearSalary(float yearSalary) {
this.yearSalary = yearSalary;
}
@Override
public String toString() {
return super.toString()+"
"+"职位:"+position+"
"+"年薪:"+yearSalary;
}
}
public class Employee extends Personnel {
private String department;
private float monthSalary;
//无参构造函数
public Employee() {
}
//姓名和年龄的构造函数
public Employee(String name, int age) {
super(name, age);
}
//全部属性的构造函数
public Employee(String name, int age, String sex,String department,float monthSalary) {
super(name, age, sex);
this.department=department;
this.monthSalary=monthSalary;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public float getMonthSalary() {
return monthSalary;
}
public void setMonthSalary(float monthSalary) {
this.monthSalary = monthSalary;
}
@Override
public String toString() {
return super.toString()+"所属部门:"+"
"+department+"
"+"月薪:"+monthSalary;
}
}
* 统一命名成类似图片1.jpg,图片2.jpg。。
* 让用户输入想要自动命名的文件夹路径和文件统一命的名称(如图片),
* 然后再让用户输入想要自动命名的文件类型(jgp等)*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class jfr extends JFrame {
String getpath;
String gettype;
String getname;
JTextField jf1 = new JTextField();// 接收用户输入的文件夹路径
JTextField jf2 = new JTextField();// 接收用户输入的文件夹下的文件类型
JTextField jf3 = new JTextField();// 接收用户输入的文件夹下的文件统一的名称
ImageIcon bu = new ImageIcon("button.gif");// 这个图片我放在了目录下,由于是提问我发送不成图片
JButton sure, cancel;
public jfr() {
Container cp;
cp = getContentPane();
setSize(400, 400);
setLocation(640, 400);
setTitle("文件自动批量命名工具");
setBackground(Color.blue);
setLayout(new GridLayout(4, 2));
setVisible(true);
cp.add(new JLabel("请输入您要批量命名的文件\n所在文件夹路径"));
cp.add(jf1);
cp.add(new JLabel("请输入您要批量命名的文件\n的文件类型,如\"txt\",\"doc\"等"));
cp.add(jf2);
cp.add(new JLabel("请输入您要批量处理的文件\n前缀名:"));
cp.add(jf3);
sure = new JButton("确定", bu);
cancel = new JButton("取消", bu);
cp.add(sure);
cp.add(cancel);
jf1.addActionListener(new actionlisten1());
jf2.addActionListener(new actionlisten1());
sure.setActionCommand("正在批量命名中,请稍后!");
sure.addActionListener(new bu1());
cancel.addActionListener(new bu2());
addWindowListener(new windowlisten());
}// 以下用来实现监听三个文本框的输入,由于字数限制,只写一个
class actionlisten1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
getpath = jf1.getText();
}
}// 监听按钮确定
class bu1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println(sure.getActionCommand());
exchange ex = new exchange(gettype, gettype, getname);
boolean an = ex.exchangefiles();
if (an)
System.out.println("文件批量命名完毕,请查阅!");
}// 监听取消按钮
}
class bu2 implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("已经取消");
}
}
class windowlisten extends WindowAdapter {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}// 这个类我没有定义成类中类,用来实现文件的重命名
class exchange {
String getpath;
String gettype;
String getname;
public exchange(String getp, String gett, String getn) {
getpath = getp;
gettype = gett;
getname = getn;
}// 这个方法用来实现改变文件的名称
public boolean exchangefiles() {
getpath = exchangestring(getpath);
File f1 = new File(getpath);
String files[] = f1.list();
for (int i = 0; i <= files.length; i++) {
File f2 = new File(getpath + files[i]);
File f3 = new File(getpath + "\\" + getname + i + "." + gettype);
f3.renameTo(f2);
}
return true;
}// 此方法用来转换用户输入的文件夹路径中'\',将其转换为'\\'
public String exchangestring(String s) {
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '\\') {
// 目前我遇到的问题就是这样,无法将路径中的'\'换成'\\'
s = s.substring(0, i) + "\\\\" + s.substring(i);
System.out.println("test!");
}
}
return s;
}
}
}
public class test {
public static void main(String[] args) {
jfr jf = new jfr();
}
}
//自己好好看看。这东西错误好多阿。
//什么错误都有。我就给你改了。另外test是另一个 .java文件中写的。自己看看
//还有就是我只是把你的程序改的不报错误了!
一把无情的刀插入了我的心脏.....心好痛啊!头一次见有人这么写代码还带注释的,更那个啥的是,竟然还有理由!BS你!
目前我遇到的问题就是这样,无法将路径中的'\'换成'\\',应该是要转义,用4个\能代替一个\。你提问的方式不对,要一次提一个问题,这样人家才好回答。
public String exchangestring(String s)
{for(int i=0;i<s.length();i++)
{if(s.charAt(i)=='\\')
{s=s.substring(0,i)+"\\\\"+s.substring(i+1);
i=i+1;
System.out.println("test!");
}}
return s;}}
s.substring(i)改为s.substring(i+1)
后面再加一句i=i+1;因为换了之后,长度变长了,如果这里不加的话会死循环
要求太高,分太低,估计没高手给你解释,新手友情提醒 这个问题不菜鸟啊,要写出这么一个东西,得死很多脑细胞的,分数太低了 我也不太清楚,可以
如果可以,把你的源码发到
[email protected]
晚上回去帮你看一下。
相关视频
java读取解析大文件 40G左右求出name重复次top10的信息并输出求教高手,怕...
2、若要使用java原生库的话建议使用多线程构建一个MapReduce模型,多线程逐行或者按块读将各自任务下的词频统计到DB 3、若使用第三方的话建议使用solr或者flink这种高度封装的组件既可以保证结果的正确性也可以保证性能
求教Java Web高手一个简单的“Action概念”是什么?
action在程序中扮演一个任务处理分发的角色,前台页面在需要请求后台时,需要说明要连接到后台的哪个接口,这个过程就是通过action来完成的。网上有很多搭建一个简单的增删改查的项目例子,跟着做一遍你会有更大的收获的。祝你学有所成。action
JAVA,求教大佬,不用写出完整程序,大概思路就可以
首先我说一下Vector,Vector本身已经很少使用了,它虽然是线程安全的,但是性能不如ArrayList,其操作方式也与ArrayList基本类似,另外说一下栈Stack继承了Vector,你也可以考虑一下使用栈。1、打印就不说了,对象序列化后遍历向量打印输出,遍历可以使用jdk1.8的lambda表达式所支持的forEach()方法:2、新增...
java新手求教
楼主:在java编译时,无论你是否调用,都会检查的,只要有一处有错,就会编译不通过。java运行原理如下(我是引用别人的,我比较懒,哈哈):Java应用程序的开发周期包括编译、下载、解释和执行几个部分。Java编译程序将 Java源程序翻译为JVM可执行代码--字节码。Java将符号引用信息保留在字节码中,由...