Java扫描程序:如何在输入后保持同一行

时间:2017-06-05 15:46:58

标签: java java.util.scanner

我有一个小代码段,我不知道如何修复。就是这样:

System.out.print("y=");
while(!scan.hasNextInt()) scan.next();
m = scan.nextInt();
System.out.print("x+");
while(!scan.hasNextInt()) scan.next();
b = scan.nextInt();

输出为:一行y = 3,下一行为x + 4。我希望他们在同一条线上。我该怎么做?

3 个答案:

答案 0 :(得分:0)

我不确定你想要做什么,但也许你只需要使用一个System.out.print?在代码的底部,例如:

System.out.print("y= %d  x+%d", m , b);

答案 1 :(得分:0)

理解你的问题为什么你想要它有点令人困惑?

但是这里有一个片段,您可以尝试看看它是否对您有用!

 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;


 public class so1 {
     public static void main(String[] args) throws IOException {
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         String arrayStr = br.readLine();
         String[] auxStr = arrayStr.split(" ");
         int[] arr = new int[2];

        for(int i=0;i<auxStr.length;i++){
           arr[i]= Integer.parseInt(auxStr[i]);
        }

        System.out.println("y="+arr[0] + " x+"+arr[1]);
  }

}

这是你能得到的 -

3 4
y=3 x+4

如果您觉得有用,请更新您的问题。我会相应更新。

答案 2 :(得分:0)

看起来这就是你的程序的样子:

y=3<newline>
x+5<newline>

但是你希望它看起来像:

y=3x+5

有问题的换行来自使用扫描仪和标准输入的固有缓冲特性。为了使扫描器知道它已到达数字的末尾,必须有空格(空格,换行符等)。为了使程序从STDIN接收输入,int的字符长度必须为大于缓冲区大小,或者必须按下ENTER。

TL; DR - 你想要的是很难做到的,也许是不可能的,只需要使用基本标准。如果你真的想要输出你想要的,你可能需要找到一个库来与控制台交互并使用这一点。

但是,如果您重新构建输入,您可能会得到几乎同样好的东西:

enter intercept: 5<enter>
enter slope:     3<enter>
y=3x+5

您的代码经过修改后可生成输出:

System.out.print("enter intercept:");
while(!scan.hasNextInt()) scan.next();
m = scan.nextInt();
System.out.print("enter slope:    ");
while(!scan.hasNextInt()) scan.next();
b = scan.nextInt();
System.out.println("y="+m+"x+"+b);