2016-08-12 6 views
-1

Egal, ob ich "Y" oder "N" in die Konsole eingeben springt es immer in die else-Anweisung, ist der Scanner falsch eingerichtet oder was ist das Problem mit diesem Skript?Scanner Ändern einer Zeichenfolge funktioniert nicht - Java

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

class StartingClass { 
public static void main(String arg[]){ 

    System.out.println("The Best Encryption Bot 2016"); 

    StringBuffer passWord = new StringBuffer(); 
    Scanner input = new Scanner(System.in); 
    System.out.println("Please enter the phrase you want to encrypt: "); 
    passWord.append(input.nextLine()); 
    System.out.println("Original: " + passWord); 

    for(int i = 0; i < passWord.length(); i++) { 
     int temp = 0; 
     temp = (int)passWord.charAt(i); 
     temp = (int) (temp * 4); 
     passWord.setCharAt(i, (char)temp); 
    } 
    System.out.println("Encrypted: " + passWord); 

    System.out.println("Do you want to unencrypt a phrase ? Y/N"); 
    Scanner Encrypt = new Scanner(System.in); 
    String unencrypt = Encrypt.nextLine(); 


    if (unencrypt == "Y") { 
     StringBuffer deCrypt = new StringBuffer(); 
      Scanner deinput = new Scanner(System.in); 
      System.out.println("Please enter the phrase you want to Decrypt: "); 
      deCrypt.append(deinput.nextLine()); 
      System.out.println("Original: " + deCrypt); 

      for(int i = 0; i < passWord.length(); i++) { 
       int temp = 0; 
       temp = (int)deCrypt.charAt(i); 
       temp = (int) (temp/4); 
       deCrypt.setCharAt(i, (char)temp); 
       } 
      System.out.println("UnEncrypted: " + passWord); 
      } else { 
       System.out.println("Ok"); 
      } 

    } 

} 

Das Problem ist bei der if-Anweisung, wo unencrypt == "Y"

+0

Sie haben bereits einen Scanner auf System.in. Warum einen anderen erklären? Und noch eins ... – Fildor

+0

Sie vergleichen 2 Strings. Dies sollte mit 'equals (String)' wie 'enencrypt.equals (" Y ")' gemacht werden –

Antwort

0

Der Grund ist, weil das ist nicht, wie Sie Strings vergleichen:

verwenden vergleichen:

if (unencrypt.equals("Y")){ 
    //do something 
} else{ 
    //do something else 
} 
0

Verwenden Sie unencrypt.equals("Y") anstelle von ==.

Verwandte Themen