2016-10-25 6 views
1
public static boolean retsim(int x, int y) 
{ 
    String xx = x + ""; 
    String yy = y + ""; 
    boolean returnValue = false; 
    if(xx.substring(xx.length() - 1) == yy.substring(yy.length() - 1)) 
    { 
     returnValue = true; 
    } 
    return returnValue; 
} 

Also, wenn ich kompiliere und führe dies gibt es keine Fehler. Es gibt jedoch 2 falsche Aussagen aus, wenn es nur eine wahre oder falsche Aussage geben sollte. Wie zum Beispiel:Wie wird die letzte Ziffer der Nummer mit der letzten Ziffer einer anderen Nummer verglichen?

Enter in two sets of numbers with either, 
The same or different end digit 
7 
7 
// ^^ The two sevens are the inputs 
false 
false 
// ^^ The two false statements that should only be printing out one 

Wenn die letzte Ziffer ist das gleiche wie die andere letzte Ziffer sollte true zurückgeben, und wenn diese beiden Ziffern nicht gleich ist, soll das Programm false zurück. Bitte helfen Sie ?!

public static boolean retsim(int x, int y) 
{ 
    String xx = x + ""; 
    String yy = y + ""; 
    boolean returnValue = false; 
    if(xx.substring(xx.length() - 1).equals(yy.substring(yy.length() - 1))) 
    { 
     returnValue = true; 
    } 
    return returnValue; 
} 

Jetzt ist es zurück:

Enter in two sets of numbers with either, 
The same or different end digit 
7 
7 
// ^^ The two sevens are the inputs 
true 
false 
// ^^ The two false statements that should only be printing out one 

Wer irgendwelche Ideen, wie diese letzten falsch loswerden?

Der Code, den ich verwende, um die Klasse zu nennen ist:

public static void main(String[] args) { 
Scanner console = new Scanner(System.in); 
System.out.println("Enter in two sets of numbers with either,\nThe same or different end digit"); 
int x2 = console.nextInt(); 
int y = console.nextInt(); 
System.out.println(retsim(x2,y)); 
} 
+0

schreckliche, aber es ist fast eine Lösung: http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java - man kann es macht einen einfacher Einzeiler mit http://stackoverflow.com/questions/90238/whats-the-syntax-for-mod-in-java – zapl

+0

Danke für den Vorschlag, aber haben Sie eine Idee, warum es zwei falsche Aussagen ausdrucken würde? @zapl –

+0

ersten Link, der == tut nicht, was Sie denken, – zapl

Antwort

2

Schon der erste Kommentar von zapl gibt einen guten Tipp.

public static boolean retsim(int x, int y) 
{ 
    return Math.abs(x)%10 == Math.abs(y)%10; 
} 
+0

wird das eine wahre zurück? @Dino Tw –

+0

Wenn ja, haben Sie vielleicht gerade alle meine Probleme gelöst –

+0

ja, es gibt einen booleschen Wert, wahr von false. –

-1

Meine Vermutung ist, dass Ihre ursprüngliche Implementierung nicht funktioniert, weil Sie den == Operator verwenden Strings zu vergleichen, wenn Sie String#equals(Object) verwendet werden sollen. == ist Identitätsgleichheit. Wenn Sie zwei verschiedene String-Instanzen haben - auch wenn sie denselben Inhalt haben - gibt == immer false zurück.

Wie wäre es stattdessen mit Integer#toString()?

public static boolean retsim(Integer x, Integer y) { 
    if (null == x || null == y) { 
     throw new IllegalArgumentException("x and y must not be null!"); 
    } 

    String xString = x.toString(); 
    String yString = y.toString(); 

    return xString.charAt(xString.length-1) == xString.charAt(yString.length-1); 
} 

Die return Anweisung arbeitet an zwei char Primitiven, in welchem ​​Fall == richtig zu verwenden.

+0

Sorry aber könntest du erklären was der: throw tut? Ich versuche zu verfolgen, was du getan hast. @nasukkin –

+0

@ S.Nary Ahh, das ist nur Argumentverifikation. Wenn 'x' oder' y' in die Methode mit dem Wert 'null' kommen, wird eine IllegalArgumentException mit einer nützlichen Nachricht ausgelöst, die erklärt, dass die Methode nicht mit diesen Argumenten arbeiten kann. – nasukkin

+0

Oh, danke das klärt den Teil von viel –

Verwandte Themen