Java输入获取问题关于System.in的

问题是关于System.in输入流的
这是主函数main里面的一部分代码
while(true)
{
Scanner in=new Scanner(System.in);
if(in.hasNext()){
in.close();
Runner1 r1=new Runner1();//继承了Thread
r1.start();

    continue;
}
    }

    这是Runner1类的run方法的一部分
 Scanner in2 = new Scanner(System.in);
            while (in2.hasNext())                
            {
                int i=in2.nextInt();
                orderchain.add(OrderSet.getOrderById((byte)i));

            }
            in2.close();
调试的时候从主线程进入执行Runner1类的run方法时,发现默认in2的hasnext()返回null,故直接跳到in.的close方法,有大佬知道原因吗,我本意是想在run方法再次获取键盘输入的;
本人和室友已经迷茫了一周了;
在线等,求知欲急;
0

1个回答

        while (true)                
        {
            int i=in2.nextInt();
                            if (i != 0) break; //输入0跳出,也可以别的数字
            orderchain.add(OrderSet.getOrderById((byte)i));

        }
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
IDEA获取System.in问题
项目部署在tomcat或eclipse中运行,执行至System.in程序段时控制台会按照设计停止等待获取输入值。rn部署至IDEA运行后就会直接忽略继续执行,直到整个服务全部启动。rn有遇到并解决的吗?
Intellij IDEA 如何获取System.in输入
各位大侠,在Intellij IDEA中运行代码时,Scanner scanner = new Scanner(System.in);canner.nextLine(),但在运行控制台,无法输入任何东西,请问如何设置,才能允许用户输入。
关于system.in输入流 问题!
如图所示!如果是读取文件,当读到文件末尾条件等于null,退出循环。。而这里如果不输入内容,那程序是在哪里阻塞着???为什么??它不是应该一直readline吗??![图片](https://img-ask.csdn.net/upload/201506/11/1434007068_657501.png)![图片](https://img-ask.csdn.net/upload/201506/11/1434007115_72309.png)
关于System.in的问题,谢谢
各位,我是初学者,原谅啊,我问个暴简单的问题,怎么接收键盘的输入啊???System.in吧?具体怎么用 啊?书上都写的不详细。
关于System.in的标准输入的问题
Java 的输入输出太烦了,像C++,加iostream .h 头文件后,cin、cout就直接可以输入输出,如对于输入的变量,自动转换成所定义的格式。rn如rn int a ;rn cin>>a;rn 直接,所输入的数就是a的值。如输入123,则a的值为123.rn而对于java,对于标准输出流还好,System.out.print();就可以输出所需要输出的;但对于标准输入流,就是在太麻烦了。rn byte[] a = new byte[];rn System.in.read(a);rn得到的a是字节数组,均是ascii编码的数值,如果我想输入数字123,只能先使字节数组为rn“1”“2”“3”“ENTER”的ascii码,“1”的ascii码是30,得到30,31,32,10,然后把字节数组转成字符数组‘1’,‘2’,‘3’;字符数组再转换成String字符串 “123”;再转成Integer对象,new Integer(String) ,最后使用Integer.intValue()方法把它转成数字。rn 实在是太麻烦了rn大家有没有什么好方法?rn
新手关于system.in的问题
请问:(1)在上机操作时如果有程序内有system.in这样的语句,在编译通过后应怎样输入一串INT形的数字呢?数字之间需要用什么来间隔呢?是空格吗?rn(2)还有是不是system.in返回的是输入的数字的ACSLL码呢?rn(3)有一个程序就是要求利用system.in来编的,题目是:“利用输入台输入5个整数,输出它们的最大数”我不知道该怎样编,请各位高手帮帮我解释这三个问题谢谢大家
关于System.in
查j2sdk1.4 的 documentrnrn发现in 是System 里InputStream 的一个实例.rnrn可是InputStream 是一个抽象类,应该无法生成实例啊!rnrn很困惑!
System.in如何结束输入
我用了new InputStreamReader(System.in)来获取键盘输入,按回车键没办法结束输入,请问怎样结束输入呢
关于java System.in的一个错误?
下面的程序的作用是:给出n个整数,求出这n个整数中前k个最大的整数,比如:5个整数{5.9.1.3.2},前3个最大的整数是:{5.9.3}rn然后我的程序出现了这样的错误(控制台输出!):rnrnthis is temp constructor!rnInput n:rnException in thread "main" java.lang.NullPointerExceptionrn at datastruct.Temp.setN(Temp.java:40)rn at datastruct.Temp.(Temp.java:17)rn at datastruct.Temp.main(Temp.java:88)rnrn[code=Java]rnimport java.util.Scanner;rnrn/*rn * 给定n个整数,求出其中k个最大的数rn */rnpublic class Temp rn private int k;rn private int n;rn private int[] intInputArray;rn private int[] intSomeMaxNumbersArray;rn private Scanner sca;rnrn public Temp() rn System.out.println("this is temp constructor!");rn this.setN();rn this.setK();rn this.intInputArray = new int[this.getN()];rn this.intSomeMaxNumbersArray = new int[this.getK()];rn this.initIntInputArray();rn sca = new Scanner(System.in);rn rnrn public int getK() rn return k;rn rnrn public void setK() rn System.out.println("Input k:");rn k = sca.nextInt();rn rnrn public int getN() rn return n;rn rnrn public void setN() rn System.out.println("Input n:");rn n = sca.nextInt();rn rnrn private void initIntInputArray() rn System.out.println("Input IntInputArray:");rn for (int i = 0; i < this.getN(); i++) rn this.intInputArray[i] = sca.nextInt();rn rn rnrn public void operation() rn int[] minNumAndIndex = new int[2];rn for (int i = 0; i < this.getN(); i++) rn if (i < this.getK()) rn this.intSomeMaxNumbersArray[i] = this.intInputArray[i];rn else rn minNumAndIndex = this.getMinNumIndex();rn if (minNumAndIndex[0] < this.intInputArray[i]) rn this.intSomeMaxNumbersArray[minNumAndIndex[1]] = this.intInputArray[i];rn rn rn rn rnrn private int[] getMinNumIndex() rn int minIndex;rn int min;rn int[] minNumAndIndex = new int[2];rn min = this.intSomeMaxNumbersArray[0];rn minIndex = 0;rn for (int i = 0; i < this.getK(); i++) rn if (min >= this.intSomeMaxNumbersArray[i]) rn min = this.intSomeMaxNumbersArray[i];rn minIndex = i;rn rn rn minNumAndIndex[0] = min;rn minNumAndIndex[1] = minIndex;rn return minNumAndIndex;rn rnrn private void printResult() rn for (int i = 0; i < this.getK(); i++) rn System.out.println(this.intSomeMaxNumbersArray[i] + " ");rn rn rnrn public static void main(String args[]) rn Temp temp = new Temp();rn temp.operation();rn temp.printResult();rn rnrnrn[/code]rn
初学JAVA,遇到问题,关于system.in
import java.io.*; rnpublic class ComputeArea rnrn /**rn * @param argsrn */rn public static void main(String[] args) throws IOExceptionrn // TODO Auto-generated method stubrn rn rn System.out.println("计算矩形面积"); rn System.out.print("请输入长: "); rn int a,b; rn a=(int)System.in.read(); rn //System.in.read();rn System.out.println("请输入宽"); rn System.in.skip(2); rn b=(int)System.in.read();rn int c=a*b;rn System.out.println("计算矩形面积是:"+c); rn rnrnrnrnrnrn如上计算面积,算的结果不对,不知道为何,请大家帮忙 谢谢 rn
System.in的问题
System.out.println( System.in.read() );rna被看做两个字节,高位为0低位为97(十进制),rn以字节流方式读入后应当只读入了高位0,rn那为什么输出结果是97,而不是0呢?rn
关于DataInputStream(System.in)的一个问题?
在控制台用DataInputStream(System.in)输入5个整数,保存在一个数组并在控制台输出,出现了问题,源码如下:rnimport java.io.*;rnrnpublic class Ex18_1rnrn public static void main(String[] args)rn rn DataInputStream in=null;rn int b[]=new int[5];rn rn tryrn rn in=new DataInputStream(System.in);rn System.out.println("Input 5 intergers:");rn rn for(int i=0;i<5;i++)rn rn b[i]=in.readInt();rn rn rn catch(Exception e) rn rn System.out.println("Output the intergers:");rn for(int i=0;i<5;i++)rn rn System.out.print(b[i]+" ");rn rn rnrnrn出现的问题是:rn1.有时我输入值较大的整数,还没有输入完5个控制台就输入结果了,或者输入了5个10以下的小整数还没出现输出情况,然而我用for语句控制的输入数是5个.rn2.输入的值跟我输入的值完全不一样,即出现意料之外的输出值.比如我输入:14,15,16,17,18,输出的结果竟然是:825494754,825560330,825625866,825691402,825756938.晕''rnrn请问是为什么呢?难道在这里DataInputStream(System.in)的使用是非法的?但是,使用DataInputStream(System.in)的输入的情况下,如果我不在控制台输出数据,而是保存在文件里,又不会出现异常情况.rnrn各路大侠请帮菜鸟一把啦,谢谢了....rn
JAVA WEB调用System.in问题
现在需要在servlet中读入一段从键盘输入的字符串,请问怎么实现.谢谢了.
关于JAVA的Scanner(System.in)循环输入的一些问题与解决
问题:比如如下错误代码(判断输入是否为数字,若不是数字,则重新输入): public class test { public static void main(String[] args) { int j=0; Scanner input=new Scanner(System.in); while(true){ if(input.hasNextInt()){ j=in
system.in 问题
用if语句实现学生成绩的百分制到等级制的转换。rn写if实现的成绩判断,练习通过系统输入输入一个百分制分,通过选择结构Switch转换为英制分数(A:90-100, B:80-89 C:70-79 D: 60-69;F:1-59)(思考:把Switch改为if结构) rn要求:rn使用输入流System.in的读操作读入成绩。rn把输入的String型转换成int型(使用Integer的一个静态方法ParseInt ())rn用if结构判断成绩等级,然后返回结果(不及格的都是E,其它的从A-D每十分一个等级)rn用一个循环控制你不断输入成绩并判断,直到成绩输入为0时退出程序。rn帮帮忙啊
java获取输入的问题
我是java的新手,刚学不久,不过我发现java好像没有像C语言中的scanf一样的语句.到底java是怎么得到输入的呢?希望各位大神不吝赐教.
System.in问题
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));rn这个br是不是不用关?我在一个方法里把它关了,在另一个方法里又写一遍这条语句就出异常了,说是输入流已经关闭?是不是因为我关br系统就把System.in关了,就不能再用了?那么我就永远不应该关这个流吗?除非写deamon时才关吗?JAVA中有deamon吗?rn
关于system.in一个奇怪的问题
import java.io.*;rnpublic class IODemo15rn public static void main(String args[]) throws Exceptionrn InputStream in = null;rn in = System.in;rn String str = "";rn int c = 0;rn while((c= in.read()) != -1)rn str = str+(char)c;rn rn in.close();rn System.out.println("输出的内容为:"+str);rn rnrnrnrnrnrnimport java.io.*;rnpublic class IODemo15rn public static void main(String args[]) throws Exceptionrn InputStream in = null;rn in = System.in;rn String str = "";rn //int c = 0;rn while(( in.read()) != -1)rn str = str+(char)(in.read());rn rn in.close();rn System.out.println("输出的内容为:"+str);rn rnrnrnrn第二个输出内容很奇怪.两个程序应该是一样的啊??rnD:\java>java IODemo15rndsfsdfrn输出的内容为:ssfrn
关于System.in的困扰。。。。
System类中的类字段对象定义:rn> public final static InputStream in = nullInputStream();rn打开InputStream类原码,read()为抽象方法;rn> public abstract int read() throws IOException;rn可在程序中,经常这么用:rnchar c;rnc = (char)System.in.read();rnrn都是抽象方法,没有方法体的。。。怎么回事。。
JAVA——System.in/字符流与字节流
通过键盘录入数据 当录入一行数据后,就将该行数据进行打印 如果录入的数据是over,那么停止录入import java.io.*; class ReadIn { public static void main(String[] args)throws IOException { InputStream in = System.in; StringB
system.in
Properties properties = new Properties();rnrnproperties.load(System.in);rnrn这个 System.in 该如何获得?
关于System.in的疑惑?
System.in的声明如下:rnpublic static final InputStream inrnInputStream 为抽象类,静态字段声明为抽象类型,那么如何初始化,百思不解?rn是不是字段也能上传?是不是在初始化时?
关于InputStream和System.in的疑问
树上说System.in是InputStream的一个实例,可是InputStream是抽象类呀!rn看了System类的定义,里面对System.in只有一个语句rn public final static InputStream in = nullInputStream();rn而类好像中并无nullInputStream();的定义,这个nullInputStream();到底从哪里来rn,全局函数吗?rn糊涂!!!rn
重新认识Java的System.in
重新认识 Java 的 System.in 以前也写过不少命令行的程序,处理文件时总需要通过参数指定路径,直到今天看资料时发现了一种我自己从来没用过的方式。这种方式让我重新认识了System.in。 下面是一个简单的Cat 命令的例子,这里提供了-n参数用于配置是否显示行号。 import java.io.BufferedReader; import java.io.IOException; im...
Java io 中关于System.in的一个小问题
[code=java]rnpublic class test rn public static void main(String[]args) throws Exceptionrn InputStream in = System.in;rn System.out.println(in);rn rn[/code]rnrn跟踪源代码发现:rnSystem.in 就是public final static InputStream in = nullInputStream();rn而nullInputStream();的源代码是:rn[code=java]rnprivate static InputStream nullInputStream() throws NullPointerException rn if (currentTimeMillis() > 0) rn return null;rn rn throw new NullPointerException();rn [/code]rn显然,不出意外是返回null,且System.in 不是native!rn为什么System.out.println(in);输出的不是null而是java.io.BufferedInputStream@c17164 ?rn---------------rn菜鸟求教 !
关于System.in的分析
最近在看《JAVA编程思想》,其中System.in迷惑了我。rn首先看下System的源码(jdk1.6)rn[code="java"]rnpublic final static InputStream in = nullInputStream();rnrnprivate static InputStream nullInputStream() throws NullPointerException rn if (currentTimeMillis() > 0) rn return null;rn rn throw new NullPointerException();rn rn[/code]rnrn疑问1: 通过源码可以看到 System.in是System类的一个静态属性,其为InputStream,初始时通过nullInputStream()方法返回,但是return null?rnrn疑问2: 写了一个测试类,通过语句System.out.println(System.in); 打印出结果为:java.io.BufferedInputStream@1fb8ee3,说明System.in是BufferedInputStream类型,如何实现的?rnrn疑问3: 如果线程执行到System.in.read();时,未在console输入内容,线程将挂起,直到console有输入内容。如何实现的?
关于System.in的困惑
System.in到底指的是什么?仅仅是键盘?rnrn目的:解决c程序和java程序之间的实时通信rnrn准备使用方案:在c中用ipc启动java进程,然后在java中通过标准输入读到从c中传的东西rnrn比如:rn java的程序是Test.javarn {rn 。。。。。rn BufferedReader in = new BufferedReader(new InputStreamReader(System.in));rn str=in.readLine();rn 。。。。rn }rn rn 在c的那一端用rn id=ipcBeginProcess("java Test");rn ipcWriteProcess(id,"hello ");rnrn疑惑:Test。java可以直接读到从键盘输入的东西,可是却读不到ipc过来的东西,可rnrnipcWriteProcess就应该是将hello输出到进程Test的标准输入了,他是应该读到的,可为什rnrn么读不到呢?rnrn可是如果反过来,Test输出,ipc就可以接受到,ipc输出,Test就得不到,这是怎么回事呢?rnrn
关于java输入的问题?
如何输入n个整数 连续保存在一个整数数组里面!rn我通常保存的只是一个字符串!
关于java的输入问题??
小弟我有一个关于java输入的问题,希望那位高手帮助解决一下,是这样的,我需要输入一组数,但只能,输入一个就换行,能不能在一行里一起输入,就是输入一个数,跳过空格,再读一个数,先谢了~~~~
【java关于输入的问题】
[code=java]package test;rnrnimport java.util.HashMap;rnimport java.util.Scanner;rnrnpublic class TestClass rn static HashMap hm = new HashMap<>();rnrn public static void main(String[] args) rn System.out.println("Write something down!");rn Scanner sca = new Scanner(System.in);rn for (int i = 0; i < 3; ++i) rn System.out.println("NOTE");rn String str = sca.nextLine();rn System.out.println("MOOD");rn String mode=sca.next();rn hm.put(mode, str);rn rn rn System.out.println("hm size is"+hm.size());rnrn System.out.println("ENTER YPUR MODE");rn String chosen_mode=sca.next(); //为什么无法输入??rn try rn System.out.println("chosen_mode :"+hm.get(chosen_mode));rn rn catch(Exception e) rn System.out.println("NTO FOUND");rn rn rnrn[/code]rnrn[b][i]如上,为什么当程序进行到注释的那一行就不能继续了??rn**这个小程序的目的:将hm的size控制在3,并且每次的键值都由用户输入,在这过后,提示用户输入一个模式(MODE),如果可以找到(FOUND),就将其打印出来[/i][/b]
关于JAVA 的输入问题
我是一个刚学JAVA的新手,我弄不清JAVA 的输入输出是怎么回事,比如我要接收一个FLOAT变量,我该怎么进行,谁能仔细给出我讲讲数据输入输出!
Scanner(System.in)的问题!!!
当输入完之后,想换行输入,然后以“#”或者两次回车键为结束,输入的类型为String的类型,这个是怎么实现啊?请大侠为小弟指点下!!!(小弟分少,不好意思!)
使用system.in的问题
我想在命令提示符下实现这样的功能:提示用户输入参数,如“请输入参数”,然后用将输入的参数传入。rn用system.in的方式实现如下:class testrnrn public static void main(String[] args)rn rn In in = new In();rn int i,j;rn for(in.init();!in.empty();)rn rn i = in.getInt();rn j = in.getInt();rn System.out.println(i);rn rn rnrnclass Inrnrn static int c;rn static boolean blank()rn rn return Character.isWhitespace((char)c);rn rn static void readC()rn rn tryrn rn c = System.in.read();rn rn catch(Exception e)rn rn c=-1;rn rn rn public static void init()rn rn tryrn rn readC();rn rn rn catch(Exception e)rn rn c=-1;rn rn rn public static boolean empty()rn rn return c ==-1;rn rn public static String getString()rn rn if(empty())rn return null;rn String s = "";rn dorn rn s += (char)c;rn readC();rn rn while(!empty());rn readC();rn return s;rn rn public static int getInt()rn rn return Integer.parseInt(getString());rn rnrn在test类中执行,不能打印出任何东西,请大家帮着看看。
不解System.in的问题
类System中是这样定义in的:rnpublic final static InputStream in = nullInputStream();rnrn函数是这样的:rnprivate static InputStream nullInputStream() throws NullPointerException rn if (currentTimeMillis() > 0)rn return null;rn throw new NullPointerException();rn rnrn这样定义的in不是表明不指向任何对象吗,那怎么可以用的,何况它也不可能在其他地方改变的:rn finalrn但我们还是经常在用,我的问题:对于指向null的引用怎么能用呢?rnSystem.out也是一样的问题。rnrn请各位帮帮忙,帮我解释一下,谢先了。
Java中IO流问题--System.in
[b]System.in 是返回一个InputSteam,这个InputStream中有个read()方法,可以读字节。rn但我查了API和源码,read()是一个抽象方法啊,为什么还是能用呢?是什么去实现了?rn那段源码也是完全没看懂,怎么是返回一个nullInputStream()的返回值是Null啊。[/b]rnrn[code=java] /**rn * The "standard" input stream. This stream is alreadyrn * open and ready to supply input data. Typically this streamrn * corresponds to keyboard input or another input source specified byrn * the host environment or user.rn */rn public final static InputStream in = nullInputStream();rnrn/**rn * The following two methods exist because in, out, and err must bern * initialized to null. The compiler, however, cannot be permitted torn * inline access to them, since they are later set to more sensible valuesrn * by initializeSystemClass().rn */rn private static InputStream nullInputStream() throws NullPointerException rn if (currentTimeMillis() > 0) rn return null;rn rn throw new NullPointerException();rn rn[/code]rnrn哪个大神来给解释下?解释懂了,以身相许啊。。。[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]rnrn[color=#FF0000]PS:还有个小问题[/color]rn是不是System.in会自动捕捉\r\n回车换行符?当有这个符号时,就认为用户输入完毕?rnrn大神快点来!!!可惜木有@功能。rnrn
java 两道华为笔试测试题目 输入 system.in
system.in
如何用System.in输入del等符号
如何用java的System.in在命令行(dos状态下)获得键盘上的一些特殊字符,如:del,shift,alt
使用System.in从命令行输入参数,如何……
我每次只想输入一个字符,而且一旦键入一个字符就提交,即不需要安回车,rnrn有什么方法可以实现呢rn
请教一个关于DataInputStream(System.in)的问题
初来驾到望前辈们指教,第一次发帖rnrnpackage word;rnrnrnimport java.io.DataInputStream;rnimport java.io.IOException;rnrnrnpublic class MyDictionary rn public static void main(String[] args )throws IOException,rn ClassNotFoundExceptionrn WordDictionary wd=new WordDictionary();rn wd.load();rnwhile(true)rnrn DataInputStream dis=new DataInputStream(System.in);rn System.out.println("按照以下选项请输入序号!");rn System.out.println("[1]____查询");rn System.out.println("[2]____增加");rn System.out.println("[3]____删除");rn System.out.println("[4]____浏览");rn System.out.println("[5]____退出");rn rn int count=dis.readInt();rn switch(count)rn case 1:rn break;rn rn case 2:rn break;rn rn case 3:rn break;rn rn case 4:rn break;rn rn case 5:rn System.exit(0);rn break;rn rn default:rn System.out.println("请重新输入");rn //break; 这个不用加!!!!!!!!!rn rn rnrn rn//dis.close();rn rnrn有2个疑问:rn1.请教下为什么这个程序调试时,我从键盘输入任何数(如:1、2、……)它都直接跳到default语句执行了呢?进不了其他case里啊,为什么啊?rn2.再就是第1次输入一个数字,再按2次回车,它才到了default语句里,到了第2次循环时按一次回车就到了default语句了,这种情况就是奇数次输入数字,按2次回车,偶数次输入数字,按1次回车,这是哪里的问题啊?我如何做才能让他每次只需按一次回车就可以执行到default语句啊?
Scanner(System.in) 关于cache清空的问题
[code=java]rnimport java.util.Scanner;rn//输入一个数,显示一个数,输入错误重新输入rnpublic class Test rn public static void main(String[] args) rn Scanner sc = new Scanner(System.in);rn double temp;rn while (true) rn System.out.print("输入:");//输入一个数rn while (!sc.hasNextDouble()) //如果输入的不是数字,进入循环rn System.out.print("输入错误,重新输入:");rn sc.nextLine();//释放掉输入内容rn rn temp = sc.nextDouble();//在输入正确的情况下接受数字rn System.out.println(temp);rn rn rnrnrn[/code]rnrn我的输入操作:rnrn[img=https://img-bbs.csdn.net/upload/201707/04/1499143316_634980.png][/img]rnrn输入rn45 asdf asdf sad fdsaf 1212rntemp接受45 rn在接受45后Scanner里有缓存"asdf asdf sad fdsaf 1212"rn之后重新进入外循环rn控制台打印"输出"rn进行内循环条件判断rn因为Scanner有cache,"asdf asdf sad fdsaf 1212"所以直接显示输入错误,重新输入:rnrn有没有什么办法可以在不确定cache有没有内容的情况下直接清空cache?rn比如sc.nextLine()rn在cache有内容的情况下就会直接清除内容rn但是cache没有值的情况下,程序会挂起来等待用户输入(※)rn有没有什么办法可以实现类似C语言的fflush()函数(不管输入直接清空输入流)功能?