2010-02-19 9 views
14

Il nostro professore ci sta facendo fare alcune programmazioni di base con Java, ha dato un sito Web e tutto per registrarsi e inviare le nostre domande, per oggi ho bisogno di fare questo esempio mi sento come Sono sulla strada giusta ma non riesco a capire il resto. Ecco la domanda effettiva:Come leggere l'input con più righe in Java

**Sample Input:** 
10 12 
10 14 
100 200 

**Sample Output:** 
2 
4 
100 

E qui è quello che ho finora:

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

Ora ho sempre trovato la risposta 2 perché sto leggendo la singola linea, come posso prendere in considerazione tutte le linee? grazie

Per qualche strana ragione ogni volta che voglio per eseguire ottengo questo errore:

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. 

Qualunque sia la versione di risposta che uso ottengo questo errore, cosa devo fare?

Tuttavia, se l'eseguo in Eclipse Esegui come> Configurazione Esegui -> argomenti del programma

10 12 
10 14 
100 200 

ottengo alcun output

EDIT

ho fatto qualche progresso, in un primo momento Stavo ricevendo l'errore di compilazione, quindi l'errore di runtime e ora ottengo la risposta sbagliata, quindi qualcuno può aiutarmi a cosa c'è che non va:

+1

fatto del tuo professore specificare come si aspetta di ottenere l'ingresso nel vostro programma? Dalla riga di comando, leggi da un file, digitato nel programma mentre è in esecuzione? – Nate

+0

@Nate umm ci ha dato un sito web http://uva.onlinejudge.org così ci registriamo lì dargli i nostri nomi utente, e si aspetta che noi risolviamo ogni giorno un problema che è una cosa buona .. e visto che non posso ottenere questo esempio per lavorare sul mio computer non vi è alcuno scopo di applicarlo. Il problema che sto cercando di risolvere è "10055 - Hashmat the Brave Warrior" http://acm.uva.es/p/v100/10055.html –

risposta

15

ho finalmente capito, Inserito è 13 volte respinti per qualsiasi motivo, il 14 "il giudice" ha accettato la mia risposta, qui è:

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())); 
     } 
    } 
} 
+0

L'utilizzo della classe Scanner è la cosa esatta che stavo cercando, grazie mille –

1

Cerca su BufferedReader. Se questo non è abbastanza generale/di alto livello, consiglio di leggere lo I/O tutorial.

+0

@Hank Gay non è da un file, sarebbe facile da fare che dagli argomenti della console –

+1

@Gandalf, puoi farlo con 'BufferedReader'. 'BufferedReader stdin = new BufferedReader (nuovo InputStreamReader (System.in));' –

8

Usa BufferedReader, è possibile farlo leggere da standard input in questo modo:

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

un sacco di esercizi per studenti usare Scanner perché ha una varietà di metodi per analizzare i numeri. Io di solito basta iniziare con un filtro di linea orientata idiomatica:

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

Il problema che stai avendo in esecuzione dalla riga di comando è che non mettere ".class" dopo che il file di classe.

java Practice 10 12

dovrebbe funzionare - fino a quando sei da qualche parte Java può trovare il file .class.

I problemi relativi ai percorsi di classe sono un tutt'uno. Se java si lamenta ancora che non riesce a trovare la tua classe, vai nella stessa directory del tuo file .class (e non sembra che tu stia usando i pacchetti ...) E provare -

java -cp . Practice 10 12

+0

@Nate Ho ancora lo stesso messaggio di errore –

+0

È Practice.class nella stessa directory in cui si sta eseguendo 'java -cp. Praticare 10 12' da? – Nate

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

Questa soluzione è un po 'più efficiente di quella sopra perché occupa il 2.128 e questo richiede 1.308 secondi per risolvere il problema.

+0

Poiché si tratta di un esercizio educativo, non è necessario migliorare le prestazioni. Leggibilità del codice> prestazioni! – Kuchi

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

     } 
} 
1
public class Sol { 

    public static void main(String[] args) { 

    Scanner sc = new Scanner(System.in); 

    while(sc.hasNextLine()){ 

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

    } 
} 
} 
+1

Aggiungere un po 'se la spiegazione con il tuo codice sarebbe piacevole. – Sakuto

Problemi correlati