JAVA myEclipse下控制台输入与输出问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA myEclipse下控制台输入与输出问题相关的知识,希望对你有一定的参考价值。

在myEclipse下面运行代码:
import java.util.*;
public class Test11
public static void main(String[] args)
Scanner in=new Scanner(System.in);
System.out.println("请输入学生的数量:");
int studentNum=in.nextInt();
System.out.println("请输入课程的数目:");
int courseNum=in.nextInt();

String[] studentName=new String[studentNum];
String[] courseName=new String[courseNum];
int[][] fenshu=new int[studentNum][courseNum];

for(int i=0;i<courseNum;i++)
System.out.println("请输入第"+(i+1)+"门课程的名字:");
courseName[i]=in.next();

for(int i=0;i<studentNum;i++)
System.out.println("请输入学生的名字:");
studentName[i]=in.next();
for(int j=0;j<courseNum;j++)
System.out.println("请输入"+studentName[i]+courseName[j]+"的成绩:");
fenshu[i][j]=in.nextInt();





运行之后在控制台状况:
请输入学生的数量:
2
请输入课程的数目:
2
请输入第1门课程的名字:
语文
请输入第2门课程的名字:
数学
请输入学生的名字:
张三
88请输入xshushszhangsanzha张三语文的成绩:

问题1:在输入张三后,打印输出的内容多了很多字符。
问题2:输入名字张三后,输入成绩无法正常?
请高手帮忙指点一下如何处理上面的问题,谢谢

首先我描述一下问题,我在做udp socket编程(一个聊天的程序)的时候,从控制台中读取中文,然后再向控制台中打印,出现中文乱码的情况。

1、出现乱码最根本的原因就是编码和解码不一致的情况。问题分析,从控制台中读取数据,数据源为控制台,输出为乱码,目标源也为控制台,但是在读取和输出的过程中有可能出现乱码,

最简单的例子就是控制台上的编码为gbk,gbk是两个字节编码的,而utf-8是三个字节。所以会出现乱码问题,

2、解决办法

(1)打开eclipse或myeclipse,点击run-》runconfigurations

如图提示,改成UTF-8,但是这里强调一下,有的eclipse或myeclipse有可能是gbk的形式,不同形式改成不同的编码,多尝试一下。

这里也需要更改一下。

(2)方法二:

打开eclipse.ini文件(在eclipse的安装目录)  添加上这句话 -Dfile.encoding = utf-8,设置系统属性file.encoding为utf-8.

2、附上我做的一个聊天的小程序,把ip到时候可以改成你想聊天的那个人的ip,两边都要运行这段代码。

package com.hzwealth.test.chat;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;/**
* C&D聊天室
* @author lixiaochao
* */public class UdpChatTest    public static void main(String[] args)        new Thread(new UdpClientThread()).start();        new Thread(new UdpServerThread()).start();
   
/**
* 发送端
* @author lixiaochao
* */class UdpServerThread implements Runnable

   @Override    public void run()        try
           DatagramSocket ds = new DatagramSocket();
           BufferedReader reader = new BufferedReader(new InputStreamReader(System.in,"UTF-8"));
           
           String line = null;            while((line = reader.readLine())!= null)
//这里注意,我们需要写上你对话人的ip地址。
               InetAddress address = InetAddress.getByName("你的对话人的ip地址");
               DatagramPacket dp = new DatagramPacket(line.getBytes(), line.getBytes().length, address, 9999);
               ds.send(dp);
               System.out.print("我说:"+line+"\\n\\r");                if("~over".equals(line))
                   System.out.println("发送者退出");                    break;
               
           
           reader.close();
           ds.close();
        catch (Exception e)
           e.printStackTrace();
       
   
   
/**
* 接收端
* @author lixiaochao
* */class UdpClientThread implements Runnable

   @Override    public void run()        try
           DatagramSocket ds = new DatagramSocket(9999);
           System.out.println(System.getProperty("file.encoding"));            while(true)                byte[] buf = new byte[1024];
               DatagramPacket dp = new DatagramPacket(buf, buf.length);
               ds.receive(dp);
               InetAddress address= dp.getAddress();
               String msg = new String(buf, 0, buf.length,"GBK");
               System.out.println(address+"说:"+msg);                if("~over".equals(msg))                    break;
               
           
           ds.close();
        catch (Exception e)
           e.printStackTrace();
           
       
   
   

追问

首先谢谢你花时间来看我的问题。
你讲的内容比较深,我是初学者,还没有那么深入的学习。上面的代码输出异常问题是在特定的软件下才出现的,只是怀疑是myEclipse的设置问题,且网络上我也查找了很多的解决办法,基本上都是说控制台输出不支持中文的问题。
另外在cmd下面使用JDK8运行则没有上述问题。

参考技术A 输出函数也发出来,只发一半很浪费时间的

myeclipse下java文件乱码问题解决

中文乱码是因为编码格式不一致导致的。
1、进入Eclipse,导入一个项目工程,如果项目文件的编码与你的工具编码不一致,将会造成乱码
2、如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使 Java文件使用UTF-8编码。
3、修改默认编码:
在菜单导航栏上Window-->Preferences 打开"首选项"对话框,左侧导航树,导航到 General-->Workspace。
Windows 7平台默认为GBK,简体中文操作系统Windows XP、Windows 2000简体中文的缺省编码是GB18030,Linux平台默认为UTF-8,那么在此工作空间中建立的工程编码是GBK,工程中建立的java文件也是GBK。
可以看到默认的是GBK编码格式,修改为UTF-8编码格式或者是需要的编码格式,点击Apply,点击OK。
4、有时候需要某种类型的文件,如:*.jsp、*.java等,
导航栏window-->preferences,
打开"首选项"对话框,左侧导航树,导航到 Genera-->Content Types,
右边找到要修改的文件的类型,以*.java为例,
在下面的Default encoding,输入框中输入UTF-8->Update->OK
5、修改单个文件的编码:在包资源管理器右键点击文件->属性,改变文本文件编码格式为UTF-8 。
经过上述步骤,新建java文件即为UTF-8编码,新建项目也是UTF-8编码,在Eclipse编译、运行、调试都是没问题的。
注意事项:
请保持编码一致,不然会造成乱码,在Java开发中一般以UTF-8为主。
在转换编码前可以先备份。

以上是关于JAVA myEclipse下控制台输入与输出问题的主要内容,如果未能解决你的问题,请参考以下文章

打扰下,输出java.util.Date()时间与电脑实际时间相差8小时,Myeclipse.百度说:

为啥MyEclipse的Console输出中文为乱码?

MyEclipse------文件字符输入,输出流读写信息

Java Myeclipse里的中文字符编码问题

Eclipse MyEclipse Scala IDEA for Eclipse里如何将控制台console输出的过程记录全程保存到指定的文本文件(图文详解)

myeclipse下java文件乱码问题解决