2016-04-16 13 views
0

So wollte ich ein Programm erstellen, in dem der Benutzer aufgefordert wird, so viele Double Werte einzugeben, wie sie möchten, und das Programm speichert diese Werte in einem Array bis zum EOF (wenn der Benutzer drückt ctl + d), und druckt dann die Summe dieser Zahlen auszugeben. Dies ist, was ich bisher:Konstruieren Array von doppelten Werten von Benutzereingabe

import java.io.*; 
import java.util.*; 

public class ArrayExample { 

public static void main(String[] args) { 

    Scanner keyboard = new Scanner(System.in); 
    System.out.print("Enter line: "); 
    ArrayList<Double> nums = new ArrayList<Double>(); 
    double input = keyboard.nextDouble(); 

    while (input.hasNextLine()) { 
    input = keyboard.nextDouble(); 
    } 
    System.out.print(nums); 
    double sum = 0; 
    for (int i = 0; i < nums.size(); i++) { 
    sum+=Integer.parseInt(nums.get(i)); 
    System.out.println(sum); 
    } 
} 
} 

Meine Fragen waren, wie würde ich eine Schleife verwenden eingegeben werden, bis EOF zu halten Lesen verdoppelt, ist die Arraylist der beste Weg, um die Benutzer Eingaben zu speichern und ist, dass die meisten richtigen Weg um die Summe zu bekommen? Vielen Dank!

+0

in der Schleife tun ... 'nums.add (keyboard.nextDouble());' sondern der ganzen Linie loszuwerden ... 'Eingang = keyboard.nextDouble();' und auch Sie könnten will einfach 'keyboard.hasNextDouble();' als deine while loop condition ... ab jetzt aber dein code kompiliert nicht weil du das tust .. 'while (input.hasNextLine())' Also ... nein brauche für die 'Summe + = Integer.parseInt (nums.get (i));' einfach einfach ... 'sum + = nums.get (i);' – 3kings

+0

@ 3kings Es kompiliert mit 'hasNextLine()', Es wird nur zur Laufzeit nicht funktionieren. – Andreas

+2

@Andreas nein ... er hat ... 'input.hasNextLine()' das macht keinen Sinn ... unter Berücksichtigung 'Eingabe' ist ein Doppel – 3kings

Antwort

1

Ändern Sie die while und for Loops gemäß dem folgenden Abschnitt. Verwenden Sie in der while-Schleife einfach die hasNextDouble()-Methode von Scanner direkt und fügen Sie Werte zu Ihrer Arraylist hinzu, sobald sie eingegeben werden. In der for-Schleife müssen Sie die Werte nicht in ganze Zahlen zerlegen, da sum ein Double ist, das den Datentyp Ihrer Arraylist darstellt. Arraylist ist für Ihren Fall geeignet, da Sie sich nicht sicher sind, wie viele Werte Sie vom Benutzer erhalten. Arraylists sind in der Größe veränderbar.

while (keyboard.hasNextDouble()) { 
     nums.add(keyboard.nextDouble()); 
    } 
    keyboard.close(); 
    System.out.println(nums); 
    double sum = 0; 
    for (int i = 0; i < nums.size(); i++) { 
    sum += nums.get(i); 
    } 
    System.out.println(sum); 
Verwandte Themen