我试图使用扫描仪和无限循环从用户获取一个整数.我知道解决这个问题的解决方案,但我一直想知道为什么我的第一种方法不能正常工作?
Scanner myScanner = new Scanner(System.in);
int x = 0;
while(true){
try{
System.out.println("Insert a number: ");
x = myScanner.nextInt();
break;
}catch(InputMismatchException e){
System.out.println("Invalid, try again.");
continue;
}
}
Run Code Online (Sandbox Code Playgroud)
它适用于第一次迭代,但它只是在屏幕上永远打印"无效,再试一次".
我有更改集文件
<change-set xmlns='http://drools.org/drools-5.0/change-set' xmlns:xs='http://www.w3.org/2001/XMLSchema-instance' xs:schemaLocation='http://drools.org/drools-5.0/change-set http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd'>
<add>
<resource source='http://172.16.13.33:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/Eligibility/Eligibility' type='PKG' />
<resource source='http://172.16.13.33:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/RiskEngine/RiskEngine' type='PKG' />
<resource source='http://172.16.13.33:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/AccountTransfer/AccountTransfer' type='PKG' />
<resource source='http://172.16.13.33:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/Correspondence/Correspondence' type='PKG' />
</add>
</change-set>
Run Code Online (Sandbox Code Playgroud)
它已经工作了 5 年,突然停止工作。
得到以下错误:
<change-set xmlns='http://drools.org/drools-5.0/change-set' xmlns:xs='http://www.w3.org/2001/XMLSchema-instance' xs:schemaLocation='http://drools.org/drools-5.0/change-set http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd'>
<add>
<resource source='http://172.16.13.33:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/Eligibility/Eligibility' type='PKG' />
<resource source='http://172.16.13.33:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/RiskEngine/RiskEngine' type='PKG' />
<resource source='http://172.16.13.33:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/AccountTransfer/AccountTransfer' type='PKG' />
<resource source='http://172.16.13.33:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/Correspondence/Correspondence' type='PKG' />
</add>
</change-set>
Run Code Online (Sandbox Code Playgroud) 我有这个 POD:
=head1 My code
=head2 check
Checks something.
Parameters:
=over 8
=item what to check.
=back
=cut
Run Code Online (Sandbox Code Playgroud)
podchecker不抱怨。perldoc显示这个:
My code
check
Checks something.
Parameters:
what to check.
Run Code Online (Sandbox Code Playgroud)
我希望“检查内容”行进一步缩进。
我需要如何更改我的 POD 以显示缩进的参数?有没有比=items更好的方法来做到这一点?
我的构建脚本有以下代码:
def includePatchFrom = "WTF?!"
task patchWebXml(type: Exec) {
executable "perl"
args "scripts/patch.pl", includePatchFrom
}
gradle.taskGraph.whenReady { taskGraph ->
if (taskGraph.hasTask(webtestWar)) {
includePatchFrom = "resources/webtest"
}
else {
includePatchFrom = "resources/production"
}
}
Run Code Online (Sandbox Code Playgroud)
如果我正确理解http://www.gradle.org/docs/current/userguide/tutorial_using_tasks.html,我应该能够includePatchFrom在whenReady闭包中设置该变量,但它只保留其初始值:
...
:patchWebXml
...
Starting process 'command 'perl''. Working directory: /Users/robert/ Command: perl scripts/patch.pl WTF?!
Successfully started process 'command 'perl''
Cannot read WTF?!: No such file or directory at scripts/patch.pl line 43, <$F> line 14.
:patchWebXml FAILED
Run Code Online (Sandbox Code Playgroud)
从println语句我可以告诉我includePathFrom将其设置为正确的值.似乎exec任务已经使用了旧值,includePatchFrom …
我有通常的MakeMaker模块和一个t/测试目录,我可以运行一个单独的测试文件,例如,prove -I lib t/my-test.t.
我的测试使用Test::Classand Test::More和subs(使用Effective Perl的modulino技术),如下所示:
use strict;
use warnings;
use base 'Test::Class';
use Test::More;
__PACKAGE__->runtests() unless caller;
sub set_up : Test(setup) {
# ...
}
sub test_something : Test {
is(MyModule::some_sub(1), 1);
}
# ...more test subs...
Run Code Online (Sandbox Code Playgroud)
现在我想使用Perl调试器来调查一个显示模块中问题的测试子.我想只test_something在调试器中运行,而不运行文件中的所有其他测试子.t.
prove 似乎没有这样的选择.
perl -d -I lib t/my-test.t运行所有测试,除非我更改我的modulino调用setup方法,然后调用实际的测试方法,而不是__PACKAGE__->runtests():
unless (caller) {
set_up();
test_something();
done_testing();
}
Run Code Online (Sandbox Code Playgroud)
如何在不修改代码的情况下只运行一个测试子?
在它下面运行我的测试代码似乎在它仍在执行时调用线程方法在线程当前执行之间运行方法.我想知道的是究竟发生了什么?
线程是否暂停while循环,执行方法,然后返回循环?它是在while代码的末尾或其间的任何地方吗?
或者该方法是否在另一个单独的线程中执行?还是别的什么?
package test;
public class main {
public static threed thred = new threed();
public static void main(String[] args) throws InterruptedException {
thred.start();
Thread.sleep(10000);
while (true) {
System.out.println("doing it");
thred.other();
Thread.sleep(2000);
thred.x++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
和
package test;
public class threed extends Thread {
public int x;
public threed() {
x = 0;
}
public void run() {
while (x < 10) {
System.out.println(x);
}
}
public void other() {
System.out.println("other " + x);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在与 mypy 作斗争,不明白我想要传递一个派生类,其中代码接受基类或任何派生类的实例,并在该传递的实例上调用方法。
我的代码:
from typing import Type
import abc
class Base(abc.ABC):
@abc.abstractmethod
def my_method(self):
pass
class Derived(Base):
def my_method(self):
print("Derived")
def my_function(b: Type[Base]):
b.my_method() # line 14
d = Derived()
my_function(d) # line 17
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它会打印“Derived”(如预期)。但 mypy 对此并不满意:
mcve.py:14:错误:“Base”的“my_method”参数太少
mcve.py:17: 错误:“my_function”的参数 1 具有不兼容的类型“Derived”;预期“类型[基础]”
我假设第 14 行错误是因为 mypy 没有看到第一个参数位于方法调用前面( )base.,这可能是因为第 17 行的错误?
我如何让 mypy 理解这段代码?或者我在这里缺少什么?
文件目录?
/home/wh/perlstudy/perl2/Person/Student.pm
/home/wh/perlstudy/perl2/Person/person.pl
Run Code Online (Sandbox Code Playgroud)
学生.pm
package Student;
use strict;
use warnings FATAL => 'all';
# use utf8;
# binmode(STDIN,"encoding(gbk)");
sub new
{
my $class = shift;
my $self = {
_name => shift, _rank => shift, };
# Print all the values just for clarification.
print "?????? $self->{_name}\n";
print "?????? $self->{_rank}\n";
bless $self, $class;
return $self;
}
sub studentRank {
my ( $self, $name ) = @_;
$self->{_name} = $name if defined($name);
return $self->{_name};
}
sub studentName {
my( $self ) …Run Code Online (Sandbox Code Playgroud) import Footer from "./Footer";
import Navigation from "./Navigation";
import { useRouter } from "next/router";
function Layout({ children }) {
const router = useRouter();
return (
<>
{router.pathname !== "/*" && <Navigation />}
{/* {router.pathname !== "*" && <Navigation />} */}
<main className="main-content">{children}</main>
{router.pathname !== "/*" && <Footer />}
{/* {router.pathname !== "*" && <Footer />} */}
</>
);
}
export default Layout;
Run Code Online (Sandbox Code Playgroud)
不幸的是,带有星号的方法不起作用:/?!?
预先感谢您并向大家致以最诚挚的问候;-)
我有这个函数,它接受一个数组,计算每个项目出现的频率,并返回一个唯一项目的数组,首先按计数排序,然后按字母顺序排序,然后按字母顺序不区分大小写,以便在运行之间顺序不会改变。
use strict;
use warnings;
sub sorted {
my @elements = @_;
my %counts;
foreach my $e (@elements) {
$counts{$e}++;
}
my @sorted = sort {
$counts{$b} <=> $counts{$a} or $a cmp $b or lc $a cmp lc $b
} keys %counts;
return @sorted;
}
1;
Run Code Online (Sandbox Code Playgroud)
我有这个测试用例,一切正常:
use strict;
use warnings;
use Test::More;
use module;
is_deeply(['A', 'a', 'c', 'b'], [sorted('a', 'b', 'c', 'a', 'c', 'A', 'A')]);
done_testing();
Run Code Online (Sandbox Code Playgroud)
我运行它并用于Devel::Cover收集测试覆盖率数字。我期望 100% 的覆盖率,但分支和条件覆盖率很短:
HARNESS_PERL_SWITCHES=-MDevel::Cover prove -I. test.t && cover
test.t .. …Run Code Online (Sandbox Code Playgroud) perl ×4
java ×2
devel-cover ×1
drools ×1
exception ×1
format ×1
gradle ×1
indentation ×1
javascript ×1
linux ×1
loops ×1
modulino ×1
mypy ×1
next.js ×1
perl-pod ×1
perldoc ×1
python ×1
testing ×1
unit-testing ×1
while-loop ×1