如何在Java中读取多行输入

时间:2010-02-19 13:49:52

标签: 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])); 
            } 
        } 
    }
}

10 个答案:

答案 0 :(得分:19)

我终于得到了它,无论出于何种原因,它被拒绝了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()));
        }
    }
}

答案 1 :(得分:8)

使用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]));
    }
}

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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);
        }
    }
}

答案 4 :(得分:1)

 public class Sol {

   public static void main(String[] args) {

   Scanner sc = new Scanner(System.in); 

   while(sc.hasNextLine()){

   System.out.println(sc.nextLine());

  }
 }
}

答案 5 :(得分:0)

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

java Practice 10 12

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

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

java -cp . Practice 10 12

答案 6 :(得分:0)

最简单的方法是

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
    }

}

}

答案 7 :(得分:0)

这对于进行多行输入非常有用

import java.util.Scanner;
public class JavaApp {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        String line;
        while(true){
            line = scanner.nextLine();
            System.out.println(line);
            if(line.equals("")){
                break;
            }
        }
    }  
}

答案 8 :(得分:-1)

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 ?(x-y)+"":(y-x)+"");
        }
    }
}

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

答案 9 :(得分:-2)

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

        }
}