2017-06-05 74 views
0

我有一个小的代码段,我不知道如何解决。这是它:Java扫描仪:如何在输入后保持相同的行

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在下。我希望他们在同一条线上。我该怎么做呢?

+0

你为什么需要它所以? –

+0

是否有这样的输入 - 3 4? – tom

回答

0

我不知道你想在那里做什么,但也许你只需要使用一个System.out.print?在你的代码底部用例子:

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

FIY:字符串消息中的%d代表int值 – Rivalez

+0

这不回答问题。 OP按'Enter'键后退一行并打印结果。 – Yahya

+0

Rivalez,这是简单的解决方案。我希望用户能够建立线性方程作为类型。 Yahya有正确的想法。 – Electrimatics

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 

更新你的问题,如果你不觉得它有用。我会相应更新。

+0

这不是我想要的,但问题已得到解答。似乎没有简单的方法来获得我想要发生的事情。谢谢! – Electrimatics

+0

很高兴知道这个.. – tom

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); 
+0

我的确在想这个解决方案,但我想看看我能不能打印出你写的东西。谢谢! – Electrimatics