2016-04-02 4 views
0

Ich bin neu in der Programmierung. Ich habe versucht, ungültig zurückzugeben, wenn die Benutzereingaben Zahlen außer Zahlen im Format # .00 sind.Wie kann die Rückgabe ungültig sein, wenn die Benutzereingabe 2 Dezimalstellen hat? Java

mein Code ähnlich dem folgenden

import java.util.Scanner; 
import java.text.DecimalFormat; 

public class Twodec{ 
public static void main (String[] args){ 
Scanner input = new Scanner(System.in); 

String abc = input.next(); 

double n1 = Double.parseDouble(abc); 
double n2 = n1%1; 
DecimalFormat twoDPattern = new DecimalFormat("#.00"); 
int n1length = (twoDPattern.format(n2).length()-1); 

if (n1length != 2){ 
System.out.println("Invalid"); 
} 
} 
} 

jedoch die if-Anweisung aus irgendeinem Grund ignoriert zu werden scheint. wenn ich 21 oder 23,324 eingib. Es wird nicht ungültig zurückgegeben.

Antwort

0

Wenn Sie über Datenformate nachdenken, sollten Sie über ihre textliche Darstellung nachdenken. Dies ist grundsätzlich eine String Operation.

boolean hasTwoDigits = abc.matches("\\d+\\.\\d{2}"); 

In Bezug auf den double Wert 0.21e2, 21, 21.0, 21.00 und 21.000 alle drehen in die gleiche interne Darstellung, und es gibt keine Möglichkeit, sie auseinander zu halten, wenn Sie es in ein double als die Information umgewandelt haben Wie es eingegeben wurde, ist verloren gegangen.

0

Ich glaube, Sie sind complicateing sich viel ...

versuchen, den Dezimalteil Überprüfung von findind/Splitting zu einem Punkt oder Komma, dann die Länge des zweiten Teils des Arrays zu validieren ..

Beispiel:

public static void main(String[] args) { 


     Scanner input = new Scanner(System.in); 

     String abc = input.nextLine(); 
     String[] decimalIntArray = abc.split("\\."); 

     if (decimalIntArray.length != 2) { 
      System.out.println("Invalid input.. no decimal part"); 
     } else if (decimalIntArray[1].length() != 2) { 
      System.out.println("Invalid input... there is a decimal part but to long or short..."); 
     } else { 
      System.out.println("THIS IS A VALID INPUT!!!"); 
     } 
    } 
+0

Ja, es funktioniert jetzt. trotzdem danke!! –

+0

Sie sind willkommen .... –