永发信息网

(Java)这个结果怎么得的

答案:3  悬赏:10  手机版
解决时间 2021-01-28 19:25
  • 提问者网友:相思似海深
  • 2021-01-28 04:54
public class FileDemo {

public static void byteReader(){
File f = new File("d:\\dre.txt");
try {
InputStream in = new FileInputStream(f);
byte[] bytes = new byte[1];
int len = -1;

while((len = in.read(bytes))!=-1){

System.out.println(bytes[0]);
}
in.close();

} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

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

}

}

}输出的结果为-50和-46,dre记事本里只有一个我字,为什么是这个结果,求大神细讲一下
最佳答案
  • 五星知识达人网友:夜风逐马
  • 2021-01-28 06:25
System.out.println(bytes[0]);
问题在这,bytes[0]里面放的不是中文,而是二进制码,你要先将bytes[0]里面的二进制转码,比如转为String str=new String( bytes ,"UTF-8"); 然后在输出,还有一点,你最好byte[] bytes = new byte[3];或者分配更多,不然你输出来的也是乱码,你可以试试
全部回答
  • 1楼网友:不想翻身的咸鱼
  • 2021-01-28 09:34
先编译然后运行就可以得到结果了
  • 2楼网友:第幾種人
  • 2021-01-28 08:03
就是将你输入的字符串转化为整数相加 如果你输入的有 3.12 这样的浮点数 那么你需要用 Float.parseFloat() 这个函数转化为浮点数后才能相加 swing里面好像没直接只能输入数字的输入框 你可以用这个组合【转】 import javax.swing.text.MaskFormatter; import javax.swing.JFormattedTextField; 这两个控件的使用是先实例化 MaskFormatter m=new MaskFormatter(##**##); JFormattedTextField j=new JFormattedTextField(m); 注意里面的*合#是不同效果的,一个是允许英文很数字。一个允许许数字; 这两个组合使用,可以实现你的要求,不过长度是定死的; 简单的就是直接给文本框JTextField加一个按键事件,如果捕捉到的不是数字就拒绝操作;代码如下;JTextField1.addKeyListener(new KeyAdapter(){ public void keyTyped(KeyEvent event){ char ch=event.getKeyChar(); 求采纳为满意回答。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯