2015-10-09 1 views
0

Pourriez-vous expliquer pourquoi cette boucle ne fonctionne pas si l'utilisateur tape "oui" et pourquoi il y a des erreurs avec les initialisations de variables.Java: la boucle ne fonctionne pas, erreurs avec l'initialisation des variables

import java.util.ArrayList; 
import java.util.Scanner; 

public class Main { 

    public static void main(String args[]) { 
    Scanner src; 
    String amount; 
    String counterparty; 
    String dt; 
    String ct; 
    System.out.println("Create new transaction:yes/no"); 
    Scanner abc = new Scanner(System.in); 
    String g = abc.nextLine(); 

    if (g=="yes") { 
     System.out.println("Amount of transaction:"); 
     src = new Scanner(System.in); 
     amount = src.nextLine(); 
     System.out.println("Counterparty:"); 
     counterparty = src.nextLine(); 
     System.out.println("Dt:"); 
     dt = src.nextLine(); 
     System.out.println("Ct:"); 
     ct = src.nextLine(); 
    } 
    else if (g=="no") { 
     amount="0"; 
    } 

    System.out.println("Transaction:"); 
    ArrayList <String> Provodka = new ArrayList(); 
    Provodka.add(amount); 
    Provodka.add(counterparty); 
    Provodka.add(dt); 
    Provodka.add(ct); 
    for (int i = 0; i < Provodka.size(); i++) { 
     String value = Provodka.get(i); 
     System.out.println("Element: " + value); 
    } 
    } 
} 
+1

double possible de [Comment puis-je comparer les chaînes en Java?] (Http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java – SomeJavaGuy

+0

Vous obtenez également des erreurs, car vous devez initialiser les chaînes en tant que "amount = null" ou "amount =" "'. – SomeJavaGuy

Répondre

1

Tout initialiser les variables locales et utiliser equals() au lieu de la méthode "=="

public static void main(String args[]) { 
    Scanner src; 
    String amount = null; 
    String counterparty = null; 
    String dt = null; 
    String ct = null; 
    System.out.println("Create new transaction:yes/no"); 
    Scanner abc = new Scanner(System.in); 
    String g = abc.nextLine(); 
      if (g.equals("yes")) 
        { 
     System.out.println("Amount of transaction:"); 
     src = new Scanner(System.in); 
     amount = src.nextLine(); 
     System.out.println("Counterparty:"); 
     counterparty = src.nextLine(); 
     System.out.println("Dt:"); 
     dt = src.nextLine(); 
     System.out.println("Ct:"); 
     ct = src.nextLine(); 
    } 
    else if (g.equals("no")){ 
    amount="0"; 
    } 

    System.out.println("Transaction:"); 
    ArrayList <String> Provodka = new ArrayList(); 
    Provodka.add(amount); 
    Provodka.add(counterparty); 
    Provodka.add(dt); 
    Provodka.add(ct); 
    for (int i = 0; i < Provodka.size(); i++) { 
     String value = Provodka.get(i); 
     System.out.println("Element: " + value); 
    } 
} 
0

Dans votre comparaison de chaînes que vous comparez avec les chaînes '=='. Utilisez la méthode equals() pour comparer les chaînes. par exemple: -

if ("yes".equals(g)){ 

} 
0

Tout d'abord, il y a beaucoup de déclaration inutile du scanner. L'utilisation d'une variable pour scanner fonctionnera pour toutes les entrées. Deuxièmement, déclarez vos variables au-dessus de la méthode principale et rendez-les statiques, ici vous n'aurez pas toujours besoin de les initialiser. Enfin, utilisez g.equalsIgnoreCase ("yes") au lieu de g == "yes", de cette façon si vous tapez yes dans CAPS ou non, il sera toujours enregistré. Essayez ce qui a été fait ci-dessous

public static String g; 
    public static String amount; 
    public static String counterparty; 
    public static String dt; 
    public static String ct; 

    public static void main(String args[]) { 

      Scanner s = new Scanner(System.in); 


      System.out.println("Create new transaction:yes/no"); 
       g= s.nextLine(); 

      if (g.equalsIgnoreCase("yes")) { 
       System.out.println("Amount of transaction: "); 
        amount = s.nextLine(); 

       System.out.println("Counterparty: "); 
        counterparty = s.nextLine(); 

       System.out.println("Dt: "); 
        dt = s.nextLine(); 

       System.out.println("Ct: "); 
        ct = s.nextLine(); 
      } 
      else if (g.equalsIgnoreCase("no")) { 

       amount = "0"; 
      } 

      System.out.println("Transaction:"); 
      ArrayList <String> Provodka = new ArrayList(); 
      Provodka.add(amount); 
      Provodka.add(counterparty); 
      Provodka.add(dt); 
      Provodka.add(ct); 

      for (int i = 0; i < Provodka.size(); i++) { 
       String value = Provodka.get(i); 
       System.out.println("Element: " + value); 
      } 
     } 
    }