如何在Java中读取多行输入

我们的教授正在让我们用Java做一些基本的编程,他给了一个网站和一切注册并提交我们的问题,今天我需要这样做一个例子我觉得我走在正确的轨道但我不能弄清楚剩下的。 这是实际问题:

**Sample Input:** 10 12 10 14 100 200 **Sample Output:** 2 4 100 

这是我到目前为止所得到的:

 public class Practice { public static int calculateAnswer(String a, String b) { return (Integer.parseInt(b) - Integer.parseInt(a)); } public static void main(String[] args) { System.out.println(calculateAnswer(args[0], args[1])); } } 

现在我总是得到答案2因为我正在阅读单行,我怎样才能考虑所有行? 谢谢

由于某些奇怪的原因每次我想执行我都会收到此错误:

 C:\sonic>java Practice.class 10 12 Exception in thread "main" java.lang.NoClassDefFoundError: Fact Caused by: java.lang.ClassNotFoundException: Fact.class at java.net.URLClassLoader$1.run(URLClassLoader.java:20 at java.security.AccessController.doPrivileged(Native M at java.net.URLClassLoader.findClass(URLClassLoader.jav at java.lang.ClassLoader.loadClass(ClassLoader.java:307 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher. at java.lang.ClassLoader.loadClass(ClassLoader.java:248 Could not find the main class: Practice.class. Program will exit. 

无论我使用什么版本的答案,我都会收到此错误,我该怎么办?

但是,如果我在eclipse中运行它运行>运行配置 – >程序参数

 10 12 10 14 100 200 

我没有输出

编辑

我已经取得了一些进展,起初我得到了编译错误,然后是运行时错误,现在我得到了错误的答案,所以任何人都可以帮我解决这个问题:

 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; public class Practice { public static BigInteger calculateAnswer(String a, String b) { BigInteger ab = new BigInteger(a); BigInteger bc = new BigInteger(b); return bc.subtract(ab); } public static void main(String[] args) throws IOException { BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); String line; while ((line = stdin.readLine()) != null && line.length()!= 0) { String[] input = line.split(" "); if (input.length == 2) { System.out.println(calculateAnswer(input[0], input[1])); } } } } 

我终于得到了它,无论出于何种原因,它被拒绝了13次,第14次“法官”接受了我的回答,这里是:

 import java.io.BufferedInputStream; import java.util.Scanner; public class HashmatWarrior { public static void main(String args[]) { Scanner stdin = new Scanner(new BufferedInputStream(System.in)); while (stdin.hasNext()) { System.out.println(Math.abs(stdin.nextLong() - stdin.nextLong())); } } } 

使用BufferedReader ,您可以从标准输入读取,如下所示:

 BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); String line; while ((line = stdin.readLine()) != null && line.length()!= 0) { String[] input = line.split(" "); if (input.length == 2) { System.out.println(calculateAnswer(input[0], input[1])); } } 

查看BufferedReader 。 如果这不是一般/高级,我建议阅读I / O教程 。

许多学生练习使用Scanner因为它有多种方法来解析数字。 我通常只是从惯用的面向行的filter开始:

 import java.io.*; public class FilterLine { public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); String s; while ((s = in.readLine()) != null) { System.out.println(s); } } } 
  public class Sol { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNextLine()){ System.out.println(sc.nextLine()); } } } 

您从命令行运行的问题是您没有在类文件后面添加“.class”。

java Practice 10 12

应该工作 – 只要你在某个地方java就可以找到.class文件。

类路径问题是一个完整的’其他故事。 如果java仍然抱怨它无法找到你的类,那么转到与.class文件相同的目录(并且它看起来你没有使用包…)并尝试 –

java -cp . Practice 10 12

最简单的方法是

 import java.util.*; public class Stdio4 { public static void main(String[] args) { int a=0; int arr[] = new int[3]; Scanner scan = new Scanner(System.in); for(int i=0;i<3;i++) { a = scan.nextInt(); //Takes input from separate lines arr[i]=a; } for(int i=0;i<3;i++) { System.out.println(arr[i]); //outputs in separate lines also } } 

}

 import java.util.*; import java.io.*; public class Main { public static void main(String arg[])throws IOException{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); StringTokenizer st; String entrada = ""; long x=0, y=0; while((entrada = br.readLine())!=null){ st = new StringTokenizer(entrada," "); while(st.hasMoreTokens()){ x = Long.parseLong(st.nextToken()); y = Long.parseLong(st.nextToken()); } System.out.println(x>y ?(xy)+"":(yx)+""); } } } 

这个解决方案比上面的解决方案更有效,因为它占用了2.128,这需要1.308秒来解决问题。

 package pac001; import javax.swing.JFrame; import javax.swing.JOptionPane; public class Entry_box{ public static final String[] relationship = {"Marrid", "Unmarried"}; public static void main(String[] args) { //TAKING USER ID NUMBER int a = Integer.parseInt(JOptionPane.showInputDialog("Enter ID no: ")); // TAKING INPUT FOR RELATIONSHIP JFrame frame = new JFrame("Input Dialog Example #3"); String Relationship = (String) JOptionPane.showInputDialog(frame,"Select Your Relationship","Married", JOptionPane.QUESTION_MESSAGE, null, relationship,relationship[0]); //PRINTING THE ID NUMBER System.out.println("ID no: "+a); // PRINTING RESULT FOR RELATIONSHIP INPUT System.out.printf("Mariitual Status: %s\n", Relationship); } }