簡體   English   中英

Java:循環不起作用,變量初始化出錯

[英]Java: loop doesn't work, errors with variables initialization

您能否解釋一下如果用戶輸入“ yes”,此循環為什么不起作用,以及變量初始化為何出錯。

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);
    }
  }
}

只需初始化局部變量並使用equals()方法而不是“ ==”

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);
    }
}

在字符串比較中,您將字符串與'=='進行比較。 使用equals()方法比較字符串。 例如:-

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

}

首先,有很多不必要的Scanner聲明。 對掃描儀使用一個變量將適用於所有輸入。 其次,在main方法上方聲明變量並使它們成為靜態變量,這里您將不必總是初始化它們。 最后,使用g.equalsIgnoreCase(“ yes”)代替g ==“ yes”,這樣,如果您在CAPS中鍵入yes,它仍然會注冊。 嘗試以下操作

    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);
          }
      }
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM