我无法弄清楚如何返回四个int值。我可能因为if语句而无法获得无法访问的语句错误?
它应该在字符串中返回4个值,或者大写,小写等的数字。我尝试打印出每个变量并进行打印,但不会按照现在的方式返回它们。
public static int category(String pw)
{
int Upper = 0;
int lower =0;
int num = 0;
int symbol=0;
for (int i=0; i< pw.length(); i++)
{
if (65 <= pw.charAt(i) && pw.charAt(i)<=90)
{
Upper++;
}
if(97<= pw.charAt(i) && pw.charAt(i) <=122)
{
lower++;
}
if(48<= pw.charAt(i) && pw.charAt(i) < 57)
{
num++;
}
if (31 < pw.charAt(i) && pw.charAt(i) < 48 || 57 < pw.charAt(i) && pw.charAt(i)< 64 || 90 < pw.charAt(i) && pw.charAt(i)< 97 || 122 < pw.charAt(i) && pw.charAt(i)< (127) + 1)
{
symbol++;
}
}
return Upper;
return lower;
return num;
return symbol;
}
答案 0 :(得分:1)
您不能简单地在方法中使用四个return语句。
返回后,您对这些变量做了什么?也许可以考虑将它们存储到数组或其他数据结构中,如果符合您的需要则返回它。
答案 1 :(得分:1)
您的代码中的问题是您不能返回多个这样的值。当第一个return
到达方法return
时。它也是“无法访问代码”问题的根源;在return
语句之后出现的非条件语句将无法访问。
有很多解决方案,例如返回数据或数据的其他数据结构,这可能是快速和简单的,但如果是我,我会创建一个类来保存或处理数据。这是一个接受这个想法:
public class Category {
private int upper;
private int lower;
private int num;
private int symbol;
// Getters and Setter for your private data
// ...
// Default constructor
public Category() {...}
// Copy constructor
public Category (Category cat) {...}
// Constructor good for the method
public Category (int upper, int lower, int num, int symbol) {...}
public static Category getCategory(String pw)
{
// Everything else is the same
// ...
// Here's the important part
// This will return a new instance of the Category object
return new Category(Upper, lower, num, symbol);
}
你会在你的代码中调用它,如so =&gt; Category category = Category.getCategory(yourString);
如果事实证明您不需要保留数据并且要对多个字符串进行分类,则可以跟踪一个Category
实例并执行category = Category.getCategory(yourOtherString);
。
您将访问类别=&gt;类别中的数据category.getUpper();
,category.getLower();
,...通过您在课堂上创建的公共getter和setter。
在这里,你拥有一个紧凑的对象中的所有东西,而不是数组或列表等;
我也遵循了你的代码,Upper
在你的方法中大写,而其他的则没有。我可能会避免这种情况。选择一个遵循的惯例并坚持下去。
答案 2 :(得分:0)
您不能一次返回多个ints
。如果你想这样做,你需要array
,这也必须在函数的标题中定义。
答案 3 :(得分:0)
您可以按照我在下面提到的那样返回一个列表:
public static List<Integer> category(String pw)
{
int Upper = 0;
int lower =0;
int num = 0;
int symbol=0;
List<Integer> allInts = new ArrayList<Integer>();
for (int i=0; i< pw.length(); i++)
{
if (65 <= pw.charAt(i) && pw.charAt(i)<=90)
{
Upper++;
}
if(97<= pw.charAt(i) && pw.charAt(i) <=122)
{
lower++;
}
if(48<= pw.charAt(i) && pw.charAt(i) < 57)
{
num++;
}
if (31 < pw.charAt(i) && pw.charAt(i) < 48 || 57 < pw.charAt(i) && pw.charAt(i)< 64 || 90 < pw.charAt(i) && pw.charAt(i)< 97 || 122 < pw.charAt(i) && pw.charAt(i)< (127) + 1)
{
symbol++;
}
}
allInts.add(0, Upper);
allInts.add(1,lower)
allInts.add(2,num)
allInts.add(3,symbol)
return allInts; // returning list
}
答案 4 :(得分:0)
您最多只能在方法中执行一个return
语句,因为它不仅会返回变量,还会终止该方法。如果您在彼此之后放置多个return
语句,则只有第一个语句将在此之后执行,您将离开该方法。