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