JAVA中append不显示输出的内容是怎么回事

package hh;

import javafx.scene.chart.PieChart.Data;

import javax.swing.*;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URLEncoder;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import com.sun.corba.se.spi.orbutil.fsm.Guard.Result;

import ee.WeatherInf;
import ee.util;

import java.awt.*; //窗体颜色
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URLEncoder;
import java.util.*;

public class window extends JFrame implements ActionListener{

JButton butok;
JPanel panel1;
TextField text1;
JTextArea prince=new JTextArea(15, 30);
   public window() {
     setTitle("无敌天气预报");                         //窗体标题
     setLocation(250,250);                           //窗体位置
     setSize(500,300);                               //窗体大小

     panel1 =new JPanel();                     //添加一个panel对象,方便布局
     butok= new JButton("查询");
     butok.addActionListener(this);
     text1=new TextField("输入要查询的城市:",20);
     panel1.add(text1);
     panel1.add(butok);



     add(panel1,BorderLayout.NORTH);
     add(new JScrollPane(prince),BorderLayout.CENTER);
}
   public void actionPerformed(ActionEvent arg0) {
    // TODO 自动生成的方法存根
    String str=text1.getText();     
        //将传入城市名的getNet接口类作为参数初始化线程类

    getNet city=new getNet(str);
        Thread thread=new Thread(city);
        //线程开始
        thread.start();//  
        try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        // TODO 自动生成的 catch 块
        e.printStackTrace();
    }
        prince.append(city.result);


}
public static void main(String[] args) {
    new window();
}

}
class getNet implements Runnable{

         WeatherInf wInf;
         String city;
         String result;
         public getNet(String city){
        this.city=city;

         }

         public void run() {
          try {
                 //url串
                 String url="http://api.map.baidu.com/telematics/v3/weather?location="+URLEncoder.encode(city,"utf-8")+"&output=json&ak=YknGmxIoPugT7YrNrG955YLS";

                 //调用工具类的方法获取json数据
                 String content=util.getJsonString(url);

                //调用工具类的方法解释json数据
                 wInf=util.resolveWeatherInf(content);
                 //将解释好的日期 城市 天气 温度 PM2.5 穿衣指数选出放入result
               String result=wInf.getWeatherdate()
               +" "+wInf.getLocation()+" "+wInf.getWeatherInfs()[0].getWeather()+" "+wInf.getWeatherInfs()[0].getTempertureOfDay()
            +" PM2.5指数 "+wInf.getPmTwoPointFive()
            +" 穿衣指数:"+wInf.getDressAdvise();        
                 System.out.print(result);
                 System.out.println();

             } catch (Exception e) {
                 System.out.println("查不到此地区天气!");
            }
       }   
   public void actionPerformed(ActionEvent e) {
        // TODO 自动生成的方法存根


    }
   public static void main(String agrs[]) {

        window win= new window();                  //初始化窗体
        win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);             //设置窗体关闭按钮
        win.setVisible(true);               //使窗体可见

}

}

我编写了一个,点击按钮就能查询当地天气的程序,然后我单击按钮之后,天气的详情并不显示在append上的文本框,怎么办?

1个回答

结果如图...图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
js中使用append在ajax从serlvet获得json数据后,将json输出以html格式输出

在div的id为TABLE中输出表格,第一个append能够正确实现, 但是第二个append不能实现我想要的效果,![图片说明](https://img-ask.csdn.net/upload/201505/04/1430742165_553564.png) 没有将值正确的放入表格中,但是我看不出代码的问题,将代码不使用循环append直接放入第一个中也是正确的。 要怎么样才能达到值都在表格里的效果。 ``` $('#table').append("<table border='1' width='100%'><tr>" +"<td align='center'>流水号</td>" +"<td align='center'>消费地</td>" +"<td align='center'>总金额</td>" +"<td align='center'>时间</td>"); for(var m=0;m<data.length;m++){ $('#table').append("<tr>"); $('#table').append("<td><a href='#' onclick='alertWin("+data[m].Cno+");'>"+data[m].Cno+"</a></td>"); $('#table').append("<td>"+data[m].Cplace+"</td>"); $('#table').append("<td>"+data[m].Csum+"</td>"); $('#table').append("<td>"+data[m].Ctime+"</td>"); $('#table').append("</tr>"); } $('#table').append("/<table>"); ```

java菜鸟真心求教大神,谢谢!

请大神看看下面的代码,我检查了好几次都没发现错误,为何在编译的时候会出现java找不到符号的情况。。。。代码可能有点长。。。麻烦各位了,谢谢! ``` //测试FileWriter类 public class TestFileWriter { public static void showFile(java.io.File file) { char buff[] = new char[22]; int ret = 0; System.out.println("Showfile begin["+file.getName()+"]:"); java.io.FileReader read_file = null; try { //创建读取文件对象 read_file = new java.io.FileReader(file); do { //读取一段字符,每次22个字符 ret = read_file.read(buff); for (int i=0; i<ret; i++) { System.out.print(buff[i]); //逐个输出读入的字符 } } while (ret!=-1); } catch (java.lang.Exception e) { System.out.println("There must be something wrong!"); } finally { //关闭打开的文件 try { read_file.close(); } catch (java.lang.Exception e) { System.out.println("Ignore the exception when closing."); } } System.out.println("\nshowfile end ["+file.getName()+"]."); } public static void main(String[] argv) { char buff[] = new char[48]; char ch = 'A'; int ret = 0; for (int i=0; i<26; i++) { buff[i] = ch++; //输入A-Z共26个字母到字符数组buff } java.io.File _write = new java.io.File("_write.txt"); java.io.FileWriter write_java = null; try { System.out.println(_write.getName()+"exist?"+_write.exists()); write_java = new java.io.FileWriter("_write.txt"); //创建写入文本的对象 System.out.println(_write.getName()+"exist?"+_write.exists()); write_java.write(buff,0,26); //将buff数组里的内容输出到指定文件 System.out.println(_write.getName()+"exist?"+_write.exists()); //write_java.flush(); write_java.close(); //调用close()会自动执行flush(),如果将这一行放在show_file()方法后面,则show_file()显示文件为空,因为未写入 System.out.println("\nWrite into an empty file."); showFile(_write); //调用show_file()方法 } catch (java.lang.Exception e) { System.out.println("There must be something wrong!"); } finally { try { write_java.close(); } catch (java.lang.Exception e) { System.out.println("Ignore the exception when closing."); } java.io.FileWriter append_java = null; } try { //使用append()方法向文件追加内容 append_java = new java.io.FileWriter(_write); //以普通形式打开,结果依然覆盖原文 append_java.append("Someting appended in the file...."); append_java.close(); System.out.println("\n以普通方式打开,调用append()方法"); showFile(_write); } catch (java.lang.Exception e) { System.out.println("There must be something wrong!"); } finally { try { append_java.close(); } catch (java.lang.Exception e) { System.out.println("Ignore the exception when closing."); } } try { //以追加方式打开文件,并使用append()方法向文件追加内容 append_java = new java.io.FileWriter(_write, true); append_java.write(buff,0,26); append_java.close(); System.out.println("\n以追加模式打开文件,用append()方法追加内容到文件中"); showFile(_write); } catch (java.lang.Exception e) { System.out.println("There must be something wrong!"); } finally { try { append_java.close(); } catch (java.lang.Exception e) { System.out.println("Ignore the exception when closing."); } } try { //以非追加方式打开,并用append()方法向文件追加内容 append_java = new java.io.FileWriter(_write, false); append_java.append(new String(buff).trim()); append_java.close(); System.out.println("\n以非追加方式打开,调用append()方法"); showFile(_write); } catch (java.lang.Exception e) { System.out.println("There must be something wrong!"); } finally { try { append_java.close(); } catch (java.lang.Exception e) { System.out.println("Ignore the exception when closing."); } } _write.delete(); } } ```

Java读取 中文都显示为乱码

package p8; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class Search { public static String getHtml(String urlString) { try { StringBuffer html = new StringBuffer(); URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); InputStreamReader isr = new InputStreamReader(conn.getInputStream()); BufferedReader br = new BufferedReader(isr); ; String temp; while ((temp = br.readLine()) != null) { html.append(temp).append("\n"); } br.close(); isr.close(); return html.toString(); } catch (Exception e) { e.printStackTrace(); return null; } } public static void main(String[] args) { System.out.println(Search.getHtml("https://www.hao123.com/")); } } 最后的结果中中文都是乱码,怎么解决?

JAVA新手求救!从文件中读取出的歌词在TextArea中显示不全!

RT,最近在写一个简单的MP3播放器,由于是新手,所以代码比较屎,大神不要嘲笑。。 从文件中(.lrc格式)中读取出的歌词可以在控制台完美输出,但是在Textarea中 是残缺状态,想知道原因及解决办法 以下是读取歌词并显示的代码: int lastTime = 0; int minute, second, milliSecond, total; String str = "", time, words; try { while ((str = br.readLine()) != null) { // 获取'[]'中的时间字符串 time = str.substring(str.indexOf('[') + 1, str.indexOf(']')); minute = Integer.parseInt(time.substring(0, time.indexOf(':'))); second = Integer.parseInt(time.substring(time.indexOf(':') + 1, time.indexOf('.'))); milliSecond = Integer .parseInt(time.substring(time.indexOf(".") + 1)); // 计算总时间 total = minute * 60 * 1000 + second * 1000 + milliSecond * 10; Thread.sleep(total - lastTime); // 将歌词前面的时间信息去掉,在控制台输出歌词 words = str.substring(str.indexOf("]") + 1); System.out.println(words); textarea.append(words); textarea.append("\n"); //立即绘制指定区域 textarea.paintImmediately(textarea.getBounds()); System.out.println(textarea.getBounds()); lastTime = total; } } catch (NumberFormatException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); }

java的类型转换报错,显示类型不匹配

``` package com.example.weather; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import java.util.Map; import java.util.jar.Attributes; /** * 网络访问工具类 * @author silk * */ public class PostGet { /** * get方法直接调用post方法 * @param url 网络地址 * @return 返回网络数据 */ public static String get(String url){ return post(url,null); } /** * 设定post方法获取网络资源,如果参数为null,实际上设定为get方法 * @param url 网络地址 * @param param 请求参数键值对 * @return 返回读取数据 */ public static String post(String url,Map param){ HttpURLConnection conn=null; try { URL u=new URL(url); conn=(HttpURLConnection) u.openConnection(); //返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。 StringBuffer sb = null; if(param!=null){//如果请求参数不为空 sb=new StringBuffer(); /*A URL connection can be used for input and/or output. Set the DoOutput * flag to true if you intend to use the URL connection for output, * false if not. The default is false.*/ //默认为false,post方法需要写入参数,设定true conn.setDoOutput(true); //URL 连接可用于输入和/或输出。如果打算使用 URL 连接进行输出, //则将 DoOutput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 false。 //设定post方法,默认get conn.setRequestMethod("POST"); //获得输出流 OutputStream out=conn.getOutputStream(); //对输出流封装成高级输出流 BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(out)); //将参数封装成键值对的形式 for(Map.Entry s:param.entrySet()){ sb.append(s.getKey()).append("=").append(s.getValue()).append("&"); } //将参数通过输出流写入 writer.write(sb.deleteCharAt(sb.toString().length()-1).toString()); writer.close();//一定要关闭,不然可能出现参数不全的错误 sb=null; } conn.connect();//建立连接 sb=new StringBuffer(); //获取连接状态码 int recode=conn.getResponseCode(); BufferedReader reader=null; if(recode==200){ //Returns an input stream that reads from this open connection //从连接中获取输入流 InputStream in=conn.getInputStream(); //对输入流进行封装 reader=new BufferedReader(new InputStreamReader(in)); String str=null; sb=new StringBuffer(); //从输入流中读取数据 while((str=reader.readLine())!=null){ sb.append(str).append(System.getProperty("line.separator")); } //关闭输入流 reader.close(); if (sb.toString().length() == 0) { return null; } return sb.toString().substring(0, sb.toString().length() - System.getProperty("line.separator").length()); } } catch (Exception e) { e.printStackTrace(); return null; }finally{ if(conn!=null)//关闭连接 conn.disconnect(); } return null; } } ``` 隔空的for循环行报错:类型不匹配:不能从元素类型 Object 转换为 Map.Entry 不知如何解决 以及为何会报错。望解惑 万分感谢!

JTextField的输出问题

``` class loginWindow extends JFrame implements ActionListener { JTextField titleText; JPasswordField passwordText; JLabel title; String eString; loginWindow() { setSize(200, 150); title = new JLabel("姓名"); titleText = new JTextField(10); passwordText = new JPasswordField(10); passwordText.setEchoChar('*'); titleText.addActionListener(this); passwordText.addActionListener(this); setLayout(new FlowLayout()); add(title); add(titleText); add(passwordText); setVisible(true); validate(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); eString=titleText.getText(); System.out.print(eString);} public void actionPerformed(ActionEvent e) { // eString=titleText.getText(); if (e.getSource() == titleText) System.out.println("用户名:" + eString); } ``` 为什么把 eString=titleText.getText()放在构造方法中,不能输出eString的值,而把 eString=titleText.getText()放在actionPerform中可以输出eString

新建servlet,在浏览器输出,可是换行显示不了,小白求支招

``` public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.getWriter().print(request.getScheme()+"<br/>");//获取请求协议 response.getWriter().print(request.getServerName()+"<br/>");//获取服务器名称 response.getWriter().print(request.getServerPort()+"<br/>");//获取服务器端口号 response.getWriter().print(request.getContextPath()+"<br/>");//项目名称 response.getWriter().print(request.getServletPath()+"<br/>");//获取Servlet路径 response.getWriter().print(request.getQueryString()+"<br/>");//获取参数部分 response.getWriter().print(request.getRequestURI()+"<br/>");//获取URI=项目名称+Servlet路径 response.getWriter().print(request.getRequestURL()+"<br/>");//获取URL } ```

java根据模板修改内容后,生成word,修改后内容中文乱码

Java code package com.sunyard.test; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.text.SimpleDateFormat; import java.util.Date; public class OperatorRTF { /** * 字符串转换为rtf编码 * * @param content * @return */ public String strToRtf(String content) { try { System.out.println(content); content=new String(content.getBytes(),"GB2312"); System.out.println(content); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } char[] digital = "0123456789ABCDEF".toCharArray(); StringBuffer sb = new StringBuffer(""); byte[] bs = null; bs = content.getBytes(); int bit; for (int i = 0; i < bs.length; i++) { bit = (bs[i] & 0x0f0) >> 4; sb.append("\\'"); sb.append(digital[bit]); bit = bs[i] & 0x0f; sb.append(digital[bit]); } return sb.toString(); } /** * 替换文档的可变部分 * * @param content * @param replacecontent * @param flag * @return */ public String replaceRTF(String content, String replacecontent, int flag) { String rc = strToRtf(replacecontent); String target = ""; System.out.println(rc); if (flag == 0) { target = content.replace("$timetop$", rc); } if (flag == 1) { target = content.replace("$info$", rc); } if (flag == 2) { target = content.replace("$idea$", rc); } if (flag == 3) { target = content.replace("$advice$", rc); } if (flag == 4) { target = content.replace("$infosend$", rc); } return target; } /** * 获取文件路径 * * @param flag * @return */ public String getSavePath() { String path = "D:\\"; File fDirecotry = new File(path); if (!fDirecotry.exists()) { fDirecotry.mkdirs(); } return path; } /** * 半角转为全角 */ public String ToSBC(String input) { char[] c = input.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i] == 32) { c[i] = (char) 12288; continue; } if (c[i] < 127) { c[i] = (char) (c[i] + 65248); } } return new String(c); } public void rgModel(String username, String content) { /* 构建生成文件名 targetname:12时10分23秒_username_记录.rtf */ Date current = new Date(); SimpleDateFormat sdf = new java.text.SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); String targetname = sdf.format(current).substring(11, 13) + "时"; targetname += sdf.format(current).substring(14, 16) + "分"; targetname += sdf.format(current).substring(17, 19) + "秒"; targetname += "_" + username + "_记录.doc"; /* 字节形式读取模板文件内容,将结果转为字符串 */ String strpath = getSavePath(); String sourname = strpath + "\\" + "档案利用登记单.rtf"; String sourcecontent = ""; InputStream ins = null; try { ins = new FileInputStream(sourname); byte[] b = new byte[1024]; if (ins == null) { System.out.println("源模板文件不存在"); } int bytesRead = 0; while (true) { bytesRead = ins.read(b, 0, 1024); // return final read bytes // counts if (bytesRead == -1) {// end of InputStream System.out.println("读取模板文件结束"); break; } // convert to string using bytes sourcecontent += new String(b, 0, bytesRead); } } catch (Exception e) { e.printStackTrace(); } /* 修改变化部分 */ String targetcontent = ""; /** * 拆分之后的数组元素与模板中的标识符对应关系 array[0]:timetop array[1]:info array[2]:idea * array[3]:advice array[4]:infosend */ String array[] = content.split("~"); // 2008年11月27日:更新模板之后时间无需自动填充 for (int i = 0; i < array.length; i++) { if (i == 0) { targetcontent = replaceRTF(sourcecontent, array[i], i); } else { targetcontent = replaceRTF(targetcontent, array[i], i); } } /* 结果输出保存到文件 */ try { FileWriter fw = new FileWriter(getSavePath() + "\\" + targetname, true); PrintWriter out = new PrintWriter(fw); System.out.println(targetcontent); if (targetcontent.equals("") || targetcontent == "") { out.println(sourcecontent); } else { out.println(targetcontent); } out.close(); fw.close(); System.out.println(getSavePath() + " 该目录下生成文件" + targetname + " 成功"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { OperatorRTF oRTF = new OperatorRTF(); // 被替换内容以"~"符号分割,处理的时候将其拆分为数组即可 String content = "2008Y10M12D9H-2008Y10M12D6H~idea~look~我们参照检验药品的方法~we"; oRTF.rgModel("cheney", content); } } 上面的代码是我在网上找到的一种java操作word的方法 java读取word文档时,虽然网上介绍了很多插件poi、java2Word、jacob、itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用);java2Word、jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄;itxt好像写很方便但是我查了好久资料没有见到过关于读的好办法。经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,不需要借助任何插件,只需基本IO操作外加编码转换即可。rtf格式文件表面看来和doc没啥区别,都可以用word打开,各种格式都可以设定。 ----- 实现的功能:读取rtf模板内容(格式和文本内容),替换变化部分,形成新的rtf文档。 ----- 实现思路:模板中固定部分手动输入,变化的部分用$info$表示,只需替换$info$即可。 1、采用字节的形式读取rtf模板内容 2、将可变的内容字符串转为rtf编码 3、替换原文中的可变部分,形成新的rtf文档 这是原作者的想法,可我在使用过程中,发现替换内容中(我们参照检验药品的方法)这个中文,是不能显示的,在word里,把它转换成了iso-8859-1的编码了,不能正常显示中文,我都不知道应该在哪设置编码,才能让它正常显示,原word模板中的中文,可以正常显示,应该是在读取word模板的时候,把编码方式也读进去了,现在就是想请教一下前辈们,应该如何后,自己修改的那些中文,也可以正常显示呢 [b]问题补充:[/b] 汗,这里好象自己不能回复,所以我以这种形式回复。 先感谢一楼,二楼的回答,昨天我有事,请假没上班,所以没能及时回复,先道个歉。 先回答1楼的,在写的时候,我设置编码的话,感觉是无效的,不管我怎么设置,都没用。 再回答2楼的,特别说一下,我试了一下,发现生成的word里,那些修改部分的中文的编码形式改变了,只是还是乱码。后来我把unicode,ISO-8859-1,UTF-8,GB2312,GBK,甚至ASCII都试过了, word里都是不同形式的乱码,就是不出现汉字,真闷,我感觉是在 bs = content.getBytes("unicode"); 后,系统后来又默认的把这把转成了ISO-8859-1的形式. 可是 bs = content.getBytes("ISO-8859-1"); 我这么设置,word里的汉字是????? 真不知道为什么,要是ISO-8859-1,转ISO-8859-1,应该不会改变的哎 希望高手们,能继续解答,谢谢 [b]问题补充:[/b] 汪兆铭,您好,我不知道您一直观注这个问题,我以为要过会才能看到您的回答,所以,现在才刷新了这个页面,不好意思,先道个歉。 现在回到问题中,我照您的意思, bs = content.getBytes("unicode"); 改了一下,然后输入,可是依然不能正常显示中文,是不是,在哪,还需要再转换一次呢? [b]问题补充:[/b] mirzlm@126.com 谢谢,不知道与jdk版本或是什么的没有关系 [b]问题补充:[/b] 汪兆铭,您好,我看了一下您发的东西,我发现了问题的所在,竟然是在表格单元格里面的,就替换出来的是乱码,在表格单元格外面的,是可以正常显示的,您可以去试试,把替换的那个,放在表格里,看看,会不会成功,谢谢你的帮助 [b]问题补充:[/b] 谢谢您,给我这么多的帮助,那应该是我的那个rtf模板的问题了,真的很感谢,谢谢,谢谢,再谢谢

为什么输出第一个字符串为NULL?

public class Hero{ String name; String name1; public void kill(Mortal m) { m.die(); } public static void main(String[] args) { Hero h = new Hero(); h.name="盖伦"; ADHero ad = new ADHero(); ad.name1="提莫"; h.kill(ad); } } ------------------------------------------------- public class ADHero extends Hero implements Mortal { @Override public void die() { System.out.println(name+name1); } } ---------------------------------------------- public interface Mortal { public void die(); } 使用过super关键字调用父类的name,但是还是输出NULL,请大佬帮助解释一下。

在cmd.exe中运行一个程序,程序打印信息后,如何显示C:\user\XXX

请教一下,现在我在cmd.exe中运行了一个程序,程序中会打印内容到此窗口,但是在打印完毕后 如下: C:\user\本机名称:“执行文件路径” 命令行 C:\user\本机名称:输出XXXXX(为我想要显示的内容) XXXXX XXXXX 问题出来了,我显示完毕后,程序退出,但是窗口不显示C:\user\本机名称:来等待我下次输入。 只有再次点击回车后,C:\user\本机名称:才会弹出。 如何解决这个问题,使我的程序退出后,直接显示C:\user\本机名称:

StringBuffer 打印问题

[code="java"] public class Test { public static void main(String[] args){ StringBuffer a = new StringBuffer("adc"); StringBuffer b = new StringBuffer("efg"); Test test = new Test(); test.change(a, b); System.out.println(a); System.out.println(b); } public void change(StringBuffer a ,StringBuffer b){ a.append(b); b = a; } } [/code] [code="java"] System.out.println(a); System.out.println(b); [/code] 上面的输出结果为什么是:abcefg和efg 而不是 abcefg 和 abcefg?

windows环境下启动Tomcat,日志只在文件中有,控制台不显示

> windows环境下启动Tomcat,日志只在文件中有,控制台中什么都不显示,我使用的是原生的tomcat 7.0.59,tomcat中没用log4j,但项目中用了log4j2 另外问一下start.bat最后一行`call "%EXECUTABLE%" start %CMD_LINE_ARGS%`改成`call "%EXECUTABLE%" run %CMD_LINE_ARGS%`是什么意思,麻烦详细说说,谢谢 下面是tomcat中`logging.properties`配置(没改过) ``` # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler .handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler ############################################################ # Handler specific properties. # Describes specific configuration info for Handlers. ############################################################ 1catalina.org.apache.juli.FileHandler.level = FINE 1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 1catalina.org.apache.juli.FileHandler.prefix = catalina. 2localhost.org.apache.juli.FileHandler.level = FINE 2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 2localhost.org.apache.juli.FileHandler.prefix = localhost. 3manager.org.apache.juli.FileHandler.level = FINE 3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 3manager.org.apache.juli.FileHandler.prefix = manager. 4host-manager.org.apache.juli.FileHandler.level = FINE 4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 4host-manager.org.apache.juli.FileHandler.prefix = host-manager. java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter ############################################################ # Facility specific properties. # Provides extra control for each logger. ############################################################ org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler # For example, set the org.apache.catalina.util.LifecycleBase logger to log # each component that extends LifecycleBase changing state: #org.apache.catalina.util.LifecycleBase.level = FINE # To see debug messages in TldLocationsCache, uncomment the following line: #org.apache.jasper.compiler.TldLocationsCache.level = FINE ``` log4j2的配置 ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration status="error"> <!-- 先定义所有的appender --> <appenders> <!-- 这个输出控制台的配置 --> <Console name="Console" target="SYSTEM_OUT"> <!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) --> <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" /> <!-- 这个都知道是输出日志的格式 --> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" /> </Console> <!-- 文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用 --> <!-- append为TRUE表示消息增加到指定文件中,false表示消息覆盖指定的文件内容,默认值是true --> <File name="log" fileName="logs/test.log" append="false"> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" /> </File> <!-- 添加过滤器ThresholdFilter,可以有选择的输出某个级别以上的类别 onMatch="ACCEPT" onMismatch="DENY"意思是匹配就接受,否则直接拒绝 --> <File name="ERROR" fileName="logs/error.log"> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n" /> </File> <!-- 这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 --> <RollingFile name="RollingFile" fileName="logs/web.log" filePattern="logs/$${date:yyyy-MM}/web-%d{MM-dd-yyyy}-%i.log.gz"> <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n" /> <SizeBasedTriggeringPolicy size="2MB" /> </RollingFile> </appenders> <!-- 然后定义logger,只有定义了logger并引入的appender,appender才会生效 --> <loggers> <!-- 建立一个默认的root的logger --> <root level="trace"> <appender-ref ref="RollingFile" /> <appender-ref ref="Console" /> <appender-ref ref="ERROR" /> <appender-ref ref="log" /> </root> </loggers> </configuration> ``` ![error](https://img-ask.csdn.net/upload/201704/12/1491960515_231666.png)

java如何进去选择框选择一个excel并将里面的数据显示到一个界面上

package com.excel; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import javax.swing.JTextArea; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** * 解析Excel的类 */ public class ExcelOperate { private JTextArea area; private String fileName; /** * 构造方法传值 * * @param area * 显示Excel内容的位置 * @param fileName * Excel文件名 */ public ExcelOperate(JTextArea area, String fileName) { this.area = area; this.fileName = fileName; } /** * 解析Excel文件 */ public void parseExcel() { File file = new File(fileName); String[][] result = null; try { result = getData(file, 1); } catch (IOException e) { e.printStackTrace(); } int rowLength = result.length; for (int i = 0; i < rowLength; i++) { for (int j = 0; j < result[i].length; j++) { area.append(result[i][j] + "\t\t"); } area.append("\n"); } } /** * 读取Excel的内容,第一维数组存储的是一行中格列的值,二维数组存储的是多少个行 * * @param file * 读取数据的源Excel * @param ignoreRows * 读取数据忽略的行数,比喻行头不需要读入 忽略的行数为1 * @return 读出的Excel中数据的内容 * @throws FileNotFoundException * @throws IOException */ public static String[][] getData(File file, int ignoreRows) throws FileNotFoundException, IOException { List<String[]> result = new ArrayList<String[]>(); int rowSize = 0; BufferedInputStream in = new BufferedInputStream(new FileInputStream( file)); // 打开HSSFWorkbook POIFSFileSystem fs = new POIFSFileSystem(in); HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFCell cell = null; for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) { HSSFSheet st = wb.getSheetAt(sheetIndex); // 第一行为标题,不取 for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++) { HSSFRow row = st.getRow(rowIndex); if (row == null) { continue; } int tempRowSize = row.getLastCellNum() + 1; if (tempRowSize > rowSize) { rowSize = tempRowSize; } String[] values = new String[rowSize]; Arrays.fill(values, ""); boolean hasValue = false; for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) { String value = ""; cell = row.getCell(columnIndex); if (cell != null) { switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_STRING: value = cell.getStringCellValue(); break; case HSSFCell.CELL_TYPE_NUMERIC: if (HSSFDateUtil.isCellDateFormatted(cell)) { Date date = cell.getDateCellValue(); if (date != null) { value = new SimpleDateFormat("yyyy-MM-dd") .format(date); } else { value = ""; } } else { value = new DecimalFormat("0").format(cell .getNumericCellValue()); } break; case HSSFCell.CELL_TYPE_FORMULA: // 导入时如果为公式生成的数据则无值 if (!cell.getStringCellValue().equals("")) { value = cell.getStringCellValue(); } else { value = cell.getNumericCellValue() + ""; } break; case HSSFCell.CELL_TYPE_BLANK: break; case HSSFCell.CELL_TYPE_ERROR: value = ""; break; case HSSFCell.CELL_TYPE_BOOLEAN: value = (cell.getBooleanCellValue() == true ? "Y" : "N"); break; default: value = ""; } } if (columnIndex == 0 && value.trim().equals("")) { break; } values[columnIndex] = rightTrim(value); hasValue = true; } if (hasValue) { result.add(values); } } } in.close(); String[][] returnArray = new String[result.size()][rowSize]; for (int i = 0; i < returnArray.length; i++) { returnArray[i] = (String[]) result.get(i); } return returnArray; } /** * 去掉字符串右边的空格 * * @param str * 要处理的字符串 * @return 处理后的字符串 */ public static String rightTrim(String str) { if (str == null) { return ""; } int length = str.length(); for (int i = length - 1; i >= 0; i--) { if (str.charAt(i) != 0x20) { break; } length--; } return str.substring(0, length); } } ------------------------------------------------------------------------------------------ package com.excel; import java.awt.BorderLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.UIManager; import javax.swing.filechooser.FileNameExtensionFilter; /** * 主界面,按钮响应事件,文本域输出Excel内容 */ public class OpenExcel extends JFrame implements ActionListener { private JButton button; private JScrollPane pane; private JTextArea area; public OpenExcel() { super("解析Excel"); button = new JButton("点我选择Excel文件"); button.addActionListener(this); area = new JTextArea(); pane = new JScrollPane(area); this.add(button, BorderLayout.NORTH); this.add(pane); this.setSize(300, 300); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } // 按钮事件 public void actionPerformed(ActionEvent e) { JFileChooser chooser = new JFileChooser();// 文件选择对话框 chooser.setAcceptAllFileFilterUsed(false);// 取消所有文件过滤项 chooser.setFileFilter(new FileNameExtensionFilter("Excel文件", "xls"));// 设置只过滤扩展名为.xls的Excel文件 int i = chooser.showOpenDialog(this);// 打开窗口 if (i == JFileChooser.APPROVE_OPTION) { this.setLocation(0, 0); this.setSize(Toolkit.getDefaultToolkit().getScreenSize()); new ExcelOperate(area, chooser.getSelectedFile().getAbsolutePath()) .parseExcel(); } } public static void main(String[] args) throws Exception { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); new OpenExcel(); } }为什么实现不了?可以选择但是无法显示在界面上![图片](https://img-ask.csdn.net/upload/201706/08/1496885462_114736.jpg)

JAVA怎么做点击按钮促发事件弹出浏览窗口选择excel文件读取,并显示到另外一个界面上,请给出主要代码

JAVA怎么做点击按钮促发事件弹出浏览窗口选择excel文件读取,并显示到另外一个界面上?package com.excel; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import javax.swing.JTextArea; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** * 解析Excel的类 */ public class ExcelOperate { private JTextArea area; private String fileName; /** * 构造方法传值 * * @param area * 显示Excel内容的位置 * @param fileName * Excel文件名 */ public ExcelOperate(JTextArea area, String fileName) { this.area = area; this.fileName = fileName; } /** * 解析Excel文件 */ public void parseExcel() { File file = new File(fileName); String[][] result = null; try { result = getData(file, 1); } catch (IOException e) { e.printStackTrace(); } int rowLength = result.length; for (int i = 0; i < rowLength; i++) { for (int j = 0; j < result[i].length; j++) { area.append(result[i][j] + "\t\t"); } area.append("\n"); } } /** * 读取Excel的内容,第一维数组存储的是一行中格列的值,二维数组存储的是多少个行 * * @param file * 读取数据的源Excel * @param ignoreRows * 读取数据忽略的行数,比喻行头不需要读入 忽略的行数为1 * @return 读出的Excel中数据的内容 * @throws FileNotFoundException * @throws IOException */ public static String[][] getData(File file, int ignoreRows) throws FileNotFoundException, IOException { List<String[]> result = new ArrayList<String[]>(); int rowSize = 0; BufferedInputStream in = new BufferedInputStream(new FileInputStream( file)); // 打开HSSFWorkbook POIFSFileSystem fs = new POIFSFileSystem(in); HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFCell cell = null; for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) { HSSFSheet st = wb.getSheetAt(sheetIndex); // 第一行为标题,不取 for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++) { HSSFRow row = st.getRow(rowIndex); if (row == null) { continue; } int tempRowSize = row.getLastCellNum() + 1; if (tempRowSize > rowSize) { rowSize = tempRowSize; } String[] values = new String[rowSize]; Arrays.fill(values, ""); boolean hasValue = false; for (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) { String value = ""; cell = row.getCell(columnIndex); if (cell != null) { switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_STRING: value = cell.getStringCellValue(); break; case HSSFCell.CELL_TYPE_NUMERIC: if (HSSFDateUtil.isCellDateFormatted(cell)) { Date date = cell.getDateCellValue(); if (date != null) { value = new SimpleDateFormat("yyyy-MM-dd") .format(date); } else { value = ""; } } else { value = new DecimalFormat("0").format(cell .getNumericCellValue()); } break; case HSSFCell.CELL_TYPE_FORMULA: // 导入时如果为公式生成的数据则无值 if (!cell.getStringCellValue().equals("")) { value = cell.getStringCellValue(); } else { value = cell.getNumericCellValue() + ""; } break; case HSSFCell.CELL_TYPE_BLANK: break; case HSSFCell.CELL_TYPE_ERROR: value = ""; break; case HSSFCell.CELL_TYPE_BOOLEAN: value = (cell.getBooleanCellValue() == true ? "Y" : "N"); break; default: value = ""; } } if (columnIndex == 0 && value.trim().equals("")) { break; } values[columnIndex] = rightTrim(value); hasValue = true; } if (hasValue) { result.add(values); } } } in.close(); String[][] returnArray = new String[result.size()][rowSize]; for (int i = 0; i < returnArray.length; i++) { returnArray[i] = (String[]) result.get(i); } return returnArray; } /** * 去掉字符串右边的空格 * * @param str * 要处理的字符串 * @return 处理后的字符串 */ public static String rightTrim(String str) { if (str == null) { return ""; } int length = str.length(); for (int i = length - 1; i >= 0; i--) { if (str.charAt(i) != 0x20) { break; } length--; } return str.substring(0, length); } } ------------------------------------------------------------------------------------------ package com.excel; import java.awt.BorderLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.UIManager; import javax.swing.filechooser.FileNameExtensionFilter; /** * 主界面,按钮响应事件,文本域输出Excel内容 */ public class OpenExcel extends JFrame implements ActionListener { private JButton button; private JScrollPane pane; private JTextArea area; public OpenExcel() { super("解析Excel"); button = new JButton("点我选择Excel文件"); button.addActionListener(this); area = new JTextArea(); pane = new JScrollPane(area); this.add(button, BorderLayout.NORTH); this.add(pane); this.setSize(300, 300); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } // 按钮事件 public void actionPerformed(ActionEvent e) { JFileChooser chooser = new JFileChooser();// 文件选择对话框 chooser.setAcceptAllFileFilterUsed(false);// 取消所有文件过滤项 chooser.setFileFilter(new FileNameExtensionFilter("Excel文件", "xls"));// 设置只过滤扩展名为.xls的Excel文件 int i = chooser.showOpenDialog(this);// 打开窗口 if (i == JFileChooser.APPROVE_OPTION) { this.setLocation(0, 0); this.setSize(Toolkit.getDefaultToolkit().getScreenSize()); new ExcelOperate(area, chooser.getSelectedFile().getAbsolutePath()) .parseExcel(); } } public static void main(String[] args) throws Exception { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); new OpenExcel(); } }我的代码是这样的,但是界面显示不出来,是什么问题?![图片](https://img-ask.csdn.net/upload/201706/09/1496974828_84401.jpg)

写了一个简单的MP3,用一个线程完成从文件中读出歌词,无法显示是怎么回事?

RT,原来用一个函数完成歌词的读取,可以显示,现在我用一个线程来完成同样的功能,代码都是完全从那个函数中复制过去的,结果无法显示,控制台中也无法输出,求解 以下是代码: package app; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.util.Vector; import javax.media.Manager; import javax.media.NoPlayerException; import javax.media.Player; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextArea; public class PlayFrame extends JFrame implements Runnable { Player player; Vector playlist; Thread readlyric; BufferedReader br; String filedirectory = "file:1.mp3"; int position = 0; JLabel musicname; JTextArea lyric; JPanel panellyric, panelbutton; JButton playmusic, pausemusic, next, last; Font x = new Font("Serif", Font.ITALIC + Font.BOLD, 16); public PlayFrame() { try { br = new BufferedReader(new InputStreamReader(new FileInputStream( "1.lrc"), "UTF-8")); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } playlist = new Vector(); playlist.add("file:1.mp3"); playlist.add("file:2.mp3"); this.setTitle("MP3"); this.setBounds(400, 100, 350, 550); musicname = new JLabel("Music_Name", JLabel.CENTER); musicname.setFont(x); panellyric = new JPanel(); panelbutton = new JPanel(); lyric = new JTextArea(25, 25); lyric.setEditable(false); lyric.setBackground(Color.WHITE); lyric.setLineWrap(true);// 确定是否能在右边界自动换行 last = new JButton("Last"); playmusic = new JButton("Play"); pausemusic = new JButton("Pause"); next = new JButton("Next"); playmusic.addActionListener(play_button); pausemusic.addActionListener(stop_button); next.addActionListener(next_button); last.addActionListener(last_button); panellyric.add(lyric); panelbutton.add(last); panelbutton.add(playmusic); panelbutton.add(pausemusic); panelbutton.add(next); this.add(musicname, BorderLayout.NORTH); this.add(panellyric, BorderLayout.CENTER); this.add(panelbutton, BorderLayout.SOUTH); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public ActionListener play_button = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub display(); //read(); musicname.setText(filedirectory); } }; public ActionListener stop_button = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub pause(); } }; public ActionListener next_button = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub next(); } }; public ActionListener last_button = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub last(); } }; public void display() { try { player = Manager.createPlayer(new URL(filedirectory)); readlyric=new Thread(); } catch (NoPlayerException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } player.start(); readlyric.start(); } public void pause() { player.stop(); readlyric.stop(); } public void next() { pause(); if (position < playlist.size()) { filedirectory = playlist.get(++position).toString(); } else { position = 0; filedirectory = playlist.get(position).toString(); } display(); } public void last() { pause(); if (position > 0) { filedirectory = playlist.get(--position).toString(); display(); } else { } } @Override public void run() { // TODO Auto-generated method stub System.out.println("enter method run"); int lastTime = 0; int minute, second, milliSecond, total; String str = "", time, words; try { while ((str = br.readLine()) != null) { // 获取'[]'中的时间字符串 time = str.substring(str.indexOf('[') + 1, str.indexOf(']')); minute = Integer.parseInt(time.substring(0, time.indexOf(':'))); second = Integer.parseInt(time.substring(time.indexOf(':') + 1, time.indexOf('.'))); milliSecond = Integer .parseInt(time.substring(time.indexOf(".") + 1)); // 计算总时间 total = minute * 60 * 1000 + second * 1000 + milliSecond * 10; Thread.sleep(total - lastTime); System.out.println("get lyric"); // 将歌词前面的时间信息去掉,在控制台输出歌词 words = str.substring(str.indexOf("]") + 1); System.out.println(words); lyric.append(words); lyric.append("\n"); // 立即绘制指定区域 lyric.paintImmediately(lyric.getBounds()); lastTime = total; } } catch (NumberFormatException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // public void read() { // // int lastTime = 0; // int minute, second, milliSecond, total; // String str = "", time, words; // // try { // while ((str = br.readLine()) != null) { // // 获取'[]'中的时间字符串 // time = str.substring(str.indexOf('[') + 1, str.indexOf(']')); // minute = Integer.parseInt(time.substring(0, time.indexOf(':'))); // second = Integer.parseInt(time.substring(time.indexOf(':') + 1, // time.indexOf('.'))); // milliSecond = Integer // .parseInt(time.substring(time.indexOf(".") + 1)); // // 计算总时间 // total = minute * 60 * 1000 + second * 1000 + milliSecond * 10; // // Thread.sleep(total - lastTime); // // // 将歌词前面的时间信息去掉,在控制台输出歌词 // words = str.substring(str.indexOf("]") + 1); // // System.out.println(words); // lyric.append(words); // lyric.append("\n"); // // 立即绘制指定区域 // lyric.paintImmediately(lyric.getBounds()); // // lastTime = total; // } // } catch (NumberFormatException | IOException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } public static void main(String[] args) { PlayFrame playframe = new PlayFrame(); } }

java执行linux命令,但是打印不了命令结果

``` // 执行linux命令方法 private boolean excuteLiuxOrde3r(String command) { logger.info("执行命令:" + command); boolean returnFlag = false; StringBuilder sb = new StringBuilder(); Process process= null; try { process = Runtime.getRuntime().exec(command); returnFlag = true; BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); String lo; while ((lo = bufferedReader.readLine()) != null) { sb.append(lo); sb.append("\n"); } logger.info("执行命令结果:" + sb.toString()); process.waitFor(); // 等待n秒后destory进程 }catch (Exception e){ e.printStackTrace(); } process.destroy(); return returnFlag; } ``` 我正常输入传入命令:wc -l [filename] 结果应该打印: 执行命令结果:35653232 filename 但是经过测试并不能!请问下给大神这是为嘛?

java socket网络聊天室 客户端接收不到服务端的消息

![图片说明](https://img-ask.csdn.net/upload/202004/17/1587121278_71861.png) 运行之后 服务端给客户端发消息 客户端接收不到服务端的消息 服务端可以接收到客户端的消息 求助!! 服务端代码: ``` package Chat; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.*; import java.net.ServerSocket; import java.net.Socket; //如果一个类需要有界面的显示,那么该类就需要继承自JFrame,并被称为"窗体类"。 //1.定义JFrame窗体中的组件 //2.在构造方法中初始化窗体的组件 //3.使用网络编程完成数据的传输(TCP,UDP 协议) //4.实现发送按钮的监听点击事件 public class ServerChatMain extends JFrame implements ActionListener{ public static void main(String[] args) { //调用构造方法 new ServerChatMain(); } //属性 //文本域 private JTextArea jta; //滚动条 private JScrollPane jsp; //面板 private JPanel jp; //文本框 private JTextField jtf; //按钮 private JButton jb; //输出流 private BufferedWriter bw = null; //构造方法 public ServerChatMain(){ //初始化组件 jta = new JTextArea(); //注意:需要设置文本域默认不可编辑 jta.setEditable(false); //注意:需要将文本域添加到滚动条中,实现滚动效果。 jsp = new JScrollPane(jta); //面板 jp = new JPanel(); jtf = new JTextField(10); jb = new JButton("发送"); //注意:需要将文本框与按钮添加到面板中 jp.add(jtf); jp.add(jb); //注意:需要将文本框与面板全部添加到窗体中 this.add(jsp, BorderLayout.CENTER); this.add(jp,BorderLayout.SOUTH); //注意:需要设置标题,大小,位置,关闭,是否可见 this.setTitle("聊天室服务端"); this.setSize(300,300); this.setLocation(300,300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); //TCP服务端开始 //给发送按钮绑定一个监听点击事件 jb.addActionListener(this); try{ //1.创建服务端套接字 ServerSocket serverSocket= new ServerSocket(8888); //2.等待服务端的连接 Socket socket = serverSocket.accept(); //3.获取Socket通道输入流(使用BufferedReader实现每行读取) //InputStream in= socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); //4. 获取Socket通道输出流(使用BufferedWriter实现刷新和换行) //当用户需要点击发送按钮的时候需要写出数据 bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); //循环读取数据,并拼接到文本域中 String line = null; while((line=br.readLine())!=null){ //将读取的数据拼接到文本域中显示 jta.append(line+System.lineSeparator()); } //5.关闭ServerSocket通道 serverSocket.close(); }catch (IOException e){ e.printStackTrace(); } //TCP服务端结束 } @Override public void actionPerformed(ActionEvent e){ //System.out.println("发送按钮被点击了"); //1.获取文本框中发送的内容 String text =jtf.getText(); //2.拼接需要发送的内容 text ="服务端对客户端说:"+text; jta.append(text+System.lineSeparator() ); //3.发送 try { bw.write(text); bw.newLine(); bw.flush(); //4.清空文本框内容 jtf.setText(""); } catch (IOException e1) { e1.printStackTrace(); } } } ``` 客户端代码: ``` package Chat; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.*; import java.net.Socket; //如果一个类需要有界面的显示,那么该类就需要继承自JFrame,并被称为"窗体类"。 //1.定义JFrame窗体中的组件 //2.在构造方法中初始化窗体的组件 public class ClientChatMain extends JFrame implements ActionListener { public static void main(String[] args) { //调用构造方法 new ClientChatMain(); } //属性 //文本域 private JTextArea jta; //滚动条 private JScrollPane jsp; //面板 private JPanel jp; //文本框 private JTextField jtf; //按钮 private JButton jb; //输出流 private BufferedWriter bw = null; //构造方法 public ClientChatMain() { //初始化组件 jta = new JTextArea(); //注意:需要设置文本域默认不可编辑 jta.setEditable(false); //注意:需要将文本域添加到滚动条中,实现滚动效果。 jsp = new JScrollPane(jta); //面板 jp = new JPanel(); jtf = new JTextField(10); jb = new JButton("发送"); //注意:需要将文本框与按钮添加到面板中 jp.add(jtf); jp.add(jb); //注意:需要将文本框与面板全部添加到窗体中 this.add(jsp, BorderLayout.CENTER); this.add(jp, BorderLayout.SOUTH); //注意:需要设置标题,大小,位置,关闭,是否可见 this.setTitle("聊天室客户端"); this.setSize(300, 300); this.setLocation(300, 300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); //TCP客户端开始 //给发送按钮绑定一个监听点击事件 jb.addActionListener(this); try { //1.创建客户端套接字(尝试连接) Socket socket = new Socket( "192.168.1.106",8888); //2.获取socket通道输入流 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); //3.获取socket通道输出流 bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); //循环读取数据,并拼接到文本域中 String line = null; while ((line = br.readLine()) != null) ; jta.append(line + System.lineSeparator()); //4.关闭socket通道 socket.close(); } catch (Exception e) { e.printStackTrace(); } //TCP客户端结束 } @Override public void actionPerformed(ActionEvent e){ //1.需要获取文本框中需要发送的数据内容 String text =jtf.getText(); //2.拼接内容 text = "客户端对服务端说:"+text; //3.自己显示 jta.append(text+System.lineSeparator()); try { //4.发送 bw.write(text); bw.newLine(); bw.flush(); //5.清空 jtf.setText(""); } catch (IOException ex) { ex.printStackTrace(); } } } ```

io流创建了file文件但刷新不出来那个文件?

![图片说明](https://img-ask.csdn.net/upload/202003/31/1585639907_570255.png)![图片说明](https://img-ask.csdn.net/upload/202003/31/1585639913_950196.png) 就是我没什么没有refresh ![图片说明](https://img-ask.csdn.net/upload/202003/31/1585640007_157335.jpg) 谢谢各位大佬了!!!

java后台将base64字符串转换为PDF后生成的PDF打不开怎么回事呀

![图片说明](https://img-ask.csdn.net/upload/201910/12/1570868633_161609.jpg) 后台代码: public static void base64StringToPdf(String base64Content,String filePath){ File file = new File(filePath);// 将原来参数修改为字符串 BASE64Decoder decoder = new BASE64Decoder(); BufferedInputStream bin = null; FileOutputStream fout = null; BufferedOutputStream bout = null; try { //将base64编码的字符串解码成字节数组 byte[] bytes = decoder.decodeBuffer(base64Content); //创建一个将bytes作为其缓冲区的ByteArrayInputStream对象 ByteArrayInputStream bais = new ByteArrayInputStream(bytes); //创建从底层输入流中读取数据的缓冲输入流对象 bin = new BufferedInputStream(bais); //创建到指定文件的输出流 fout = new FileOutputStream(file); //为文件输出流对接缓冲输出流对象 bout = new BufferedOutputStream(fout); byte[] buffers = new byte[1024]; int len = bin.read(buffers); while(len != -1){ bout.write(buffers, 0, len); len = bin.read(buffers); } //刷新此输出流并强制写出所有缓冲的输出字节,必须这行代码,否则有可能有问题 bout.flush(); } catch (IOException e) { e.printStackTrace(); } finally { try { bout.close(); fout.close(); bin.close(); } catch (IOException e) { e.printStackTrace(); } } } 前台是将页面展示的数据图标什么的生成PDF 前台代码: function downloadofpdf(){ var varname = $("#taskid").text(); if(confirm("您确认下载该PDF文件吗?")){ var target = document.getElementById("bodyid"); target.style.background = "#FFFFFF"; // if(pdfName==''||pdfName==undefined) pdfName= getNowFormatDate(); html2canvas(target, { onrendered:function(canvas) { var contentWidth = canvas.width; var contentHeight = canvas.height; //一页pdf显示html页面生成的canvas高度; var pageHeight = contentWidth /1592.28 * 841.89; //未生成pdf的html页面高度 var leftHeight = contentHeight; //页面偏移 var position = 0; //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高 var imgWidth = 595.28; var imgHeight = 592.28/contentWidth * contentHeight; var pageData = canvas.toDataURL('image/jpeg', 1.0); var pdf = new jsPDF('', 'pt', 'a4'); //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89) //当内容未超过pdf一页显示的范围,无需分页 if (leftHeight < pageHeight) { pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight ); } else { while(leftHeight > 0) { pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight); leftHeight -= pageHeight; position -= 841.89; //避免添加空白页 if(leftHeight > 0) { pdf.addPage(); } } } pdf.save(varname+".pdf"); // 将pdf输入为base格式的字符串 var buffer = pdf.output("datauristring"); // // 将base64格式的字符串转换为file文件 // var myfile = dataURLtoFile(buffer, varname); // var formdata = new FormData(); // formdata.append(name, myfile); $.post("/riskManage/uploadpdf",{data:JSON.stringify({formdata:buffer})},function(result){ //alert("hao"); }) //sc(); }, background: "#fff" }) } }

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

C++(数据结构与算法)78:---分而治之

一、分而治之的思想 分而治之方法与软件设计的模块化方法非常相似 分而治之通常不用于解决问题的小实例,而要解决一个问题的大实例。一般步骤为: ①把一个大实例分为两个或多个更小的实例 ②分别解决每个小实例 ③把这些小实例的解组合成原始大实例的解 二、实际应用之找出假币 问题描述 一个袋子有16个硬币,其中只有一个是假币,这个假币比其他的真币重量轻(其他所有真币的重量都是相同的)...

springboot+jwt实现token登陆权限认证

一 前言 此篇文章的内容也是学习不久,终于到周末有时间码一篇文章分享知识追寻者的粉丝们,学完本篇文章,读者将对token类的登陆认证流程有个全面的了解,可以动态搭建自己的登陆认证过程;对小项目而已是个轻量级的认证机制,符合开发需求;更多精彩原创内容关注公主号知识追寻者,读者的肯定,就是对作者的创作的最大支持; 二 jwt实现登陆认证流程 用户使用账号和面发出post请求 服务器接受到请求后使用私...

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

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

win10暴力查看wifi密码

刚才邻居打了个电话说:喂小灰,你家wifi的密码是多少,我怎么连不上了。 我。。。 我也忘了哎,就找到了一个好办法,分享给大家: 第一种情况:已经连接上的wifi,怎么知道密码? 打开:控制面板\网络和 Internet\网络连接 然后右击wifi连接的无线网卡,选择状态 然后像下图一样: 第二种情况:前提是我不知道啊,但是我以前知道密码。 此时可以利用dos命令了 1、利用netsh wlan...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

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

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

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

程序员写出这样的代码,能不挨骂吗?

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?昨夜...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

!大部分程序员只会写3年代码

如果世界上都是这种不思进取的软件公司,那别说大部分程序员只会写 3 年代码,恐怕就没有程序员这种职业。

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

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

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

早上躺尸,晚上干活:硅谷科技公司这么流行迟到?

硅谷科技公司上班时间OPEN早已不是什么新鲜事,早九晚五是常态,但有很多企业由于不打卡,员工们10点、11点才“姗姗来迟”的情况也屡见不鲜。 这种灵活的考勤制度为人羡慕,甚至近年来,国内某些互联网企业也纷纷效仿。不过,硅谷普遍弹性的上班制度是怎么由来的呢?这种“流行性迟到”真的有那么轻松、悠哉吗? 《动态规划专题班》 课程试听内容: 动态规划的解题要领 动态规划三大类 求最值/计数/可行性 常...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

Python爬虫,高清美图我全都要(彼岸桌面壁纸)

爬取彼岸桌面网站较为简单,用到了requests、lxml、Beautiful Soup4

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

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

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

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

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

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

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

Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

前几天我们公司做了一件蠢事,非常非常愚蠢的事情。我原以为从学校出来之后,除了找工作有测试外,不会有任何与考试有关的事儿。 但是,天有不测风云,公司技术总监、人事总监两位大佬突然降临到我们事业线,叫上我老大,给我们组织了一场别开生面的“考试”。 那是一个风和日丽的下午,我翘着二郎腿,左手端着一杯卡布奇诺,右手抓着我的罗技鼠标,滚动着轮轴,穿梭在头条热点之间。 “淡黄的长裙~蓬松的头发...

立即提问
相关内容推荐