java怎么获取控制台输入的字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java怎么获取控制台输入的字符串相关的知识,希望对你有一定的参考价值。

1.比较传统的方法,得到字符串后要另行判断、转换
package com.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class MainRun
/**
* @param args
*/
public static void main(String[] args)
try
BufferedReader strin=new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入一个字符串:");
String str = strin.readLine();
System.out.println("第一个:"+str);
System.out.println("请输入第二个字符串:");
String str2 = strin.readLine();
System.out.println("第2个:"+str2);
catch (IOException e)
e.printStackTrace();



2.JDK5以后引入了 Java.util.Scanner;来处理控制台输入并得到响应的类型数据
package com.test;
import java.util.Scanner;
public class MainRun
/**
* @param args
*/
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
System.out.println("输入第一个boolean值(true/false):");
if(sc.nextBoolean())
System.out.println("输入布尔:真的");
else
System.out.println("输入布尔:假的");

System.out.println("输入第一个数字:");
System.out.println("输入数字:"+sc.nextInt());
System.out.println("输入一个字符串:");
System.out.println("输入字符串:"+sc.next());
System.out.println("输入一个长整型:");
System.out.println("输入长整型:"+sc.nextLong());

参考技术A 例子:
Scanner inputStr=new Scanner(System.in);
String s=inputStr.nextLine();//获取整行的意思。
System.out.println(s);
参考技术B java.util.Scanner sc=new java.util.Scanner(System.in);

String line=sc.next();

System .out.println("You inputed:"+line);
参考技术C Scanner input = new Scanner(System.in);
System.out.println(input.next());

java io怎么读取文件并输出到控制台上?

有一个txt文件,内容是: hello
现在想通过FileInputStream 输入流读取这个txt里的内容,并把内容输出到控制台上。
请问怎么实现?

import java.io.FileInputStream;
import java.io.IOException;

public class demo
public static void main(String[] args) throws IOException
FileInputStream fis = new FileInputStream("demo1.txt");
byte [] bys =new byte[200];
int len = fis.read();
String string = new String(bys,0,len);
System.out.println(string);
我这样打出来都是乱码,求大神。。。。

直接说问题原因:你只定义byte数组,但没有把文件流放入到数组中,所以打印的string字符串内容是一串空格(看我图1)。

解决方法:int len = fis.read(); read 方法加入参数bys,这样才能把fis的内容注入bys里面。

顺便说下,FileInputStream不能正确输出中文,因为这个是按字节输出的,每个中文站2个字节,会出现乱码。下面给出正确代码截图,和运行截图(图2 、3)

参考技术A 如果有乱码,那可能是转码的问题,你试一下对内容转码一下。
string = new String(string.getBytes("ISO-8859-1"),"UTF-8");
这句话加到输出语句之前,如果不好使就把UTF-8换成GBK,应该就可以了。
参考技术B 用BufferedReader封装,字符占两个字节,你用byte容易出现只读了一半的情况。。。 参考技术C 把bys写到read里。int len = fis.read(bys); 参考技术D 你的程序只读取了文件的前200个字节。但出现乱码的原因更可能是字符编码问题,首先确认一下demo1.txt的编码,然后new String的时候,使用该编码。

以上是关于java怎么获取控制台输入的字符串的主要内容,如果未能解决你的问题,请参考以下文章

java 怎么获得控制台的输入

java中怎样读取控制台输入的整形数据

如何从java控制台获得用户输入?

如何从java控制台获得用户输入?

java io怎么读取文件并输出到控制台上?

java中从控制台输入代码问题