Как читать ввод с несколькими строками в 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

Я не получаю выход

EDIT

Я сделал некоторый прогресс, сначала я получил ошибку компиляции, затем ошибку времени выполнения, и теперь я получаю неправильный ответ, так что кто-нибудь может помочь мне в этом неправильно:

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

Ответы

Ответ 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()));
        }
    }
}

Ответ 2

Используйте 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]));
    }
}

Ответ 3

Посмотрите BufferedReader. Если этого недостаточно для общего/высокого уровня, я рекомендую прочитать учебник по I/O.

Ответ 4

В большинстве упражнений участвуют 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);
        }
    }
}

Ответ 5

 public class Sol {

   public static void main(String[] args) {

   Scanner sc = new Scanner(System.in); 

   while(sc.hasNextLine()){

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

  }
 }
}

Ответ 6

Проблема, которую вы запускаете из командной строки, заключается в том, что вы не помещаете ".class" после вашего файла класса.

java Practice 10 12

должен работать - до тех пор, пока вы где-нибудь, java может найти файл .class.

Классовые проблемы - это целая история. Если java по-прежнему жалуется, что не может найти ваш класс, перейдите в тот же каталог, что и ваш .class файл (и он не отображается, вы используете пакеты...) и попробуйте

java -cp . Practice 10 12

Ответ 7

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 секунды.

Ответ 8

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

        }
}