Java 如果有多个IF语句,如何返回1个字符串

Java 如果有多个IF语句,如何返回1个字符串,java,string,if-statement,return-value,Java,String,If Statement,Return Value,如果我有一些IF语句,如何返回1值 例如,当我选择Shopify时,它调用一个新方法,允许我在控制台中键入一些需要的凭据,然后将所有键入的数据追加到一个字符串中,并将该字符串(test)返回到主类。 在这种情况下,我选择了Bigcommerce,它调用了几乎相同的方法,并将Biggcomerce所需的所有凭证附加到1个字符串(test2)中。但是在本例中,公共字符串credentailsCollector()应该返回test2 我该怎么做?谢谢 public class CartCredenti

如果我有一些IF语句,如何返回1值

例如,当我选择Shopify时,它调用一个新方法,允许我在控制台中键入一些需要的凭据,然后将所有键入的数据追加到一个字符串中,并将该字符串(test)返回到主类。 在这种情况下,我选择了Bigcommerce,它调用了几乎相同的方法,并将Biggcomerce所需的所有凭证附加到1个字符串(test2)中。但是在本例中,公共字符串credentailsCollector()应该返回test2

我该怎么做?谢谢

public class CartCredentialsCollector {
//it should return something like this: 
//store_url=https://test.myshopify.com&apiKey=myapikey&apiPassword=myapipassword

public String credentailsCollector() throws IOException {

    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

    System.out.println("Do you want to connect a new shopping cart ('yes'/'no')");
    String newConnection = bufferedReader.readLine();
    if (newConnection.equals("no")) {
        bufferedReader.close();
    } else {
        System.out.println("Specify your shopping cart. It works with Shopify and Bigcommerce only");
        String newShoppingCart = bufferedReader.readLine();
        if (newShoppingCart.equals("Shopify")) {
            ShopifyCredentialsHandler sch = new ShopifyCredentialsHandler();
            String test = sch.shopifyCredentialsHandler();
        }
        else if (newShoppingCart.equals("Bigcommerce")) {
        BigcommerceCredentialsHandler bch = new BigcommerceCredentialsHandler();
        String test2 = bch.bigcommerceCredentialsHandler()
        }

        else {
            System.out.println("This method works with Shopify and Bigcommerce. Try to connect a Shopify or Bigcommerce store.");
            bufferedReader.close();
        }
    }
    // Here I need to return test (in case I choose "Shopify") or test2 (in case I choose "Bigcommerce"). How can I do that?
    }
}

您应该在if语句之前声明
test
,或者进行多次返回-每个if中返回一次。

您可以使用一个方法范围字符串变量并设置该变量的值,而不是两个不同的字符串变量。大概是这样的:

public class CartCredentialsCollector {
//it should return something like this: 
//store_url=https://test.myshopify.com&apiKey=myapikey&apiPassword=myapipassword

public String credentailsCollector() throws IOException {
    String test = null;
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

    System.out.println("Do you want to connect a new shopping cart ('yes'/'no')");
    String newConnection = bufferedReader.readLine();
    if (newConnection.equals("no")) {
        bufferedReader.close();
    } else {
        System.out.println("Specify your shopping cart. It works with Shopify and Bigcommerce only");
        String newShoppingCart = bufferedReader.readLine();
        if (newShoppingCart.equals("Shopify")) {
            ShopifyCredentialsHandler sch = new ShopifyCredentialsHandler();
            test = sch.shopifyCredentialsHandler();
        }
        else if (newShoppingCart.equals("Bigcommerce")) {
        BigcommerceCredentialsHandler bch = new BigcommerceCredentialsHandler();
        test = bch.bigcommerceCredentialsHandler()
        }

        else {
            System.out.println("This method works with Shopify. Try to connect a Shopify store.");
            bufferedReader.close();
        }
    }
    return test;
    // Here I need to return test (in case I choose "Shopify") or test2 (in case I choose "Bigcommerce"). How can I do that?
    }
}

正如您所意识到的,您无法访问要返回的“test”或“test2”变量的原因是因为这两个变量都超出了范围


您需要在顶部(在第一个if语句之前)声明一个字符串变量,该变量的作用域将扩展到整个credentialsCollector()方法,或者使用多个返回,将每个返回放在与“test”和“test2”相同的作用域中变量。

在整个方法中可以有多个返回语句。一些替代方法:(1)在调用所选方法的位置返回字符串;(2) 在方法的最外层范围声明String
test
,并将相同的变量设置为方法结果,无论调用哪种方法。这是一个合理的答案-但在描述代码段时显示一个代码段。感谢您的回答。我刚刚检查了@ritesh.garg建议的结果,效果很好!我没有意识到我可以创建一个测试字符串,并为每个IF语句使用测试字符串的返回值。我相信我是最好的选择。没问题!是的,这是两个选项中最好的一个。