我一直在尝试编码来查找给定数组元素的LCM。我的代码如下
public long LcmOfArray(List<int> a) { long LCM = 1; bool divisible = false; int divisor = 2, count = 0; while (count != a.Count) { for (int i = 0; i < a.Count; i++) { if (a[i] == 0) { return 0; } if (a[i] < 0) { a[i] *= -1; } if (a[i] % divisor == 0) { divisible = true; a[i] /= divisor; } if (a[i] == 1) { count++; } } if (divisible) { LCM *= divisor; } else { divisor++; } } return LCM; }
我的问题是,当我输入时,输出控制台会冻结。我尝试了另一种没有while循环的方法。也就是说,消除了while循环,并在最后添加了一个if循环。
if (count == a.Count) { return LCM; }
但现在编译器抛出一个错误,指出并非所有代码路径都返回一个值。有人能帮我解决代码中的问题吗?我是一名编程初学者。提前谢谢!!
一个while循环将持续运行,直到你给它一些东西来打破循环。在您的情况下,它打破循环的唯一方式似乎是在列表中的每一项都是1或达到0的情况下,因此根据列表的不同,它可能会或可能不会陷入无限循环。例如,a[i]=2似乎创建了一个无限循环。另一个编译器错误是因为某些条件可能会跳过返回语句。
if(count==a.Count)
{
return LCM;
}
return void; // because what if count does not equal a.Count?
你应该把bool divisible=false
和
int count=0
在while循环中。既然你不能把
int count=0
在while循环之外,您应该使用while(true)
而不是while(count!=a.count)
并将下面的if语句放在while循环的最后一个。
if (count == a.Count)
{
return LCM;
}
以下是完整的方法:
public static long LcmOfArray(List<int> a)
{
long LCM = 1;
int divisor = 2;
while (true)
{
int count = 0;
bool divisible = false;
for (int i = 0; i < a.Count; i++)
{
if (a[i] == 0)
{
return 0;
}
if (a[i] < 0)
{
a[i] *= -1;
}
if (a[i] == 1)
{
count++;
}
if (a[i] % divisor == 0)
{
divisible = true;
a[i] /= divisor;
}
}
if (divisible)
{
LCM *= divisor;
}
else
{
divisor++;
}
if (count == a.Count)
{
return LCM;
}
}
}
问题内容: 我只有一种方法。如何检查System.out.println()并将Scanner替换为使用JUnit自动输入值? PS,请提供一些解决方案… 问题答案: 理想情况下,提取尴尬的依赖关系,以便您可以在没有依赖关系的情况下进行测试。更改为简单: (考虑使用a 代替for 。) 然后,您实际上不需要进行单元测试-但您可以使用基于的进行测试,并基于的输出进行测试,从而提供所需的任何输入并检查
问题内容: 通过控制台进行任何输入的数据类型(如我使用BufferedReader类所做的那样)为String。之后,我们将其类型转换为需要查询的数据类型(如Inter.parseInt()为整数)。但是在C语言中,我们可以接受任何输入原始数据类型,而在Java中,所有输入类型都是Neccerily String。为什么是这样? 问题答案: 控制台输入实际上以一系列字节而不是字符串的形式读入。这是
我正在尝试设置logstash input mongodb插件,以便从我的数据库中读取审计,但所有解析策略似乎都有问题,我不知道如何定制任何内容。 “flatte”parse_方法工作得很好,但它忽略了mongodb对象ID,并且除了在log_输入字段中之外,不会在任何地方输出它们。 “简单”parse_method包括对象标识,但以我无法弄清楚如何使用日期过滤器解析日期的方式输出日期(例如,“2
当我在Android Studio上运行应用程序时,我看到了一些垃圾收集输出: 这是什么意思?(我正在阅读大型csv文件,其中有更多70k行)
问题内容: 我通过Stata学习了数据操纵和分析,并使用log命令记录了所有写入的命令和生成的输出。这样做可以重现我的发现,检查以前的结果并与其他人共享pdf或txt。在Python中使用什么?如果我使用Python Jupyter Notebook或Spyder有区别吗? 问题答案: 执行所需操作的方法是使用命令,如下所述: 记录IPython输出?
问题内容: 我最近为祖父使用Tkinter的Python和GUI编写了一个相当简单的程序,对于他将使用它的功能,它的工作非常漂亮。但是,当然有丑陋的控制台输出窗口。我已经通过简单地将文件的扩展名从.py更改为.pyw来成功摆脱了它。当我使用PyInstaller冻结它时,它再次出现!有什么办法可以解决这个问题吗? 提前致谢。 问题答案: 如果要隐藏控制台窗口,请参见以下文档:这是使用该选项的方式