[英]Java If statements inside for loop, returning multiple int values.
我无法弄清楚如何返回四个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;
}
你不能简单地在一个方法中有四个return语句。
返回后,您对这些变量做了什么? 也许可以考虑将它们存储到数组或其他数据结构中,如果符合您的需要则返回它。
您的代码中的问题是您不能返回多个这样的值。 当达到第一次return
时,方法return
s。 它也是“无法访问代码”问题的根源; 在非条件的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);
}
您将在代码中调用此类似=> Category category = Category.getCategory(yourString);
如果事实证明您不需要数据持久化并且有多个字符串要进行分类,则可以跟踪一个Category
实例并执行category = Category.getCategory(yourOtherString);
。
您将访问类别=> category.getUpper();
, category.getLower();
,...通过您在课堂上创建的公共getter和setter。
在这里你拥有一个紧凑的对象中的所有东西,而不是数组或列表等; 我也遵循你的代码,因为Upper
在你的方法中被大写,而其他的则没有。 我可能会避免这种情况。 选择一个遵循的惯例并坚持下去。
你不能一次返回多个ints
。 如果你想这样做,你需要一个array
,这也必须在函数的标题中定义。
你可以返回一个List,如下所述:
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
}
您最多只能在方法中执行一个return
语句,因为它不仅返回变量,还会终止该方法。 如果你把多个return
语句放在一起,那么只有第一个语句将被执行,之后你将离开这个方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.