Как читать ввод с нескольких строк в Java - PullRequest
16 голосов
/ 19 февраля 2010

Наш профессор заставляет нас заняться базовым программированием на 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, Run as> Run Configuration -> Program arguments

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

Ответы [ 10 ]

19 голосов
/ 19 февраля 2010

Я, наконец, получил его, отправил 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()));
        }
    }
}
8 голосов
/ 19 февраля 2010

Используйте 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]));
    }
}
1 голос
/ 03 мая 2017
 public class Sol {

   public static void main(String[] args) {

   Scanner sc = new Scanner(System.in); 

   while(sc.hasNextLine()){

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

  }
 }
}
1 голос
/ 19 февраля 2010

Многие ученические упражнения используют 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);
        }
    }
}
1 голос
/ 19 февраля 2010

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

0 голосов
/ 30 марта 2019

Это хорошо для ввода нескольких строк

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;
            }
        }
    }  
}
0 голосов
/ 03 июля 2018

Самый простой способ -

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
    }

}

}

0 голосов
/ 19 апреля 2013
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);

        }
}
0 голосов
/ 10 апреля 2010
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 секунды.

0 голосов
/ 19 февраля 2010

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

java Practice 10 12

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

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

java -cp . Practice 10 12

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...