import java.util.Random;
public class PasswordRandomizer {
// Define the variables
private Random random = new Random();
private int passwordLength;
private String password = "";
public PasswordRandomizer(int length) {
// Initialize the variable
this.passwordLength = length;
}
public String createPassword() {
// write code that returns a randomized password
for(int i = 0; i < this.passwordLength; i++){
int j = random.nextInt();
char symbol = "abcdefghijklmnopqrstuvwxyz".charAt(j);
this.password = this.password + symbol;
}
return this.password;
}
}
Run Code Online (Sandbox Code Playgroud)
如何在字符串中添加字符,我试过这个,但是我收到了这个错误:
"线程中的异常"主"java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-414383904".
我正在派生一个可以从C++库中获得的类,我的子类的构造函数只有在我调用基类构造函数之前执行某些代码时才能正常工作.(是的,我知道,糟糕的设计,但我不能影响我正在使用的图书馆的工作方式.)
如果基类构造函数接受参数,那么这样做实际上非常简单:
struct A {
A(bool a) { printf("A::A()\n"); }
};
bool inject(bool a) { printf("inject()\n"); return a; }
struct B : public A {
B(bool a) : A(inject(a)) { printf("B::B()\n"); }
};
Run Code Online (Sandbox Code Playgroud)
现在,当我构造一个B的实例时,inject()之前会被调用A::A().但是当基类ctor没有参数时,有没有办法做到这一点?
如何正确检查整数乘法中是否发生溢出?
int i = X(), j = Y();
i *= j;
Run Code Online (Sandbox Code Playgroud)
如何检查溢出,给定值i,j并且它们的类型?请注意,对于有符号和无符号类型,检查必须正常工作.可以假定这两个i和j是同一类型的.也可以假设在编写代码时已知类型,因此可以为签名/未签名的案例提供不同的解决方案(不需要模板杂耍,如果它在"C"中工作,则是奖励).
编辑:@pmg的答案是正确的.我暂时无法绕过它的简单,所以我会在这里与你分享.假设我们要检查:
i * j > MAX
Run Code Online (Sandbox Code Playgroud)
但我们无法真正检查,因为i * j会导致溢出,结果将是不正确的(并且总是小于或等于MAX).所以我们这样修改它:
i > MAX / j
Run Code Online (Sandbox Code Playgroud)
但这并不完全正确,因为在分工中,涉及到一些四舍五入.相反,我们想知道这个结果:
i > floor(MAX / j) + float(MAX % j) / j
Run Code Online (Sandbox Code Playgroud)
因此我们有了除法本身,它被整数算术隐含地向下舍入(在floor那里是无操作,仅作为例证),并且我们在前一个不等式中缺少了除法的其余部分(其评估为更少)比1).
假设i和j是两个数字在极限,如果它们中的任何一个增加1,将发生溢出.假设其中没有一个是零(在这种情况下,没有溢出会发生无论如何),两者(i + 1) * j和i * (j + 1)均超过1 + (i * j).因此,我们可以安全地忽略除法的舍入误差,该误差小于1.
或者,我们可以重新组织:
i - …Run Code Online (Sandbox Code Playgroud) 我正在尝试计算Pell数字,但是我总是以Cannot evaluate expression because the current thread is in a stack overflow state.异常结束,因为该方法是递归调用的.
static int calcPell(int input)
{
int i = 0;
try
{
if (input == 0 || input == 1)
return input;
else
return i = (2 * calcPell(input - 1) + calcPell(input + 1));
}
catch(Exception ex)
{
Console.Write(ex.Message);
}
return i;
}
Run Code Online (Sandbox Code Playgroud) 我正试图在AMD Fury X上初始化OpenCL 2.0,而我正在研究它的价值__OPENCL_VERSION__.无论如何都是120.我在寻找我的司机和内外#define __OPENCL_VERSION__ 120并#define __OPENCL_VERSION__ 200可以在那里找到.
是否需要在某处启用特殊标志才能启用2.0版?我有以下平台和设备:
Advanced Micro Devices,Inc.的OpenCL平台"AMD加速并行处理",版本OpenCL 2.0 AMD-APP(1912.5),FULL_PROFILE
设备:Advanced Micro Devices,Inc.'斐济'(驱动程序版本:1912.5(VM))
OpenCL版本: OpenCL 2.0 AMD-APP(1912.5)
OpenCL"C"版本:OpenCL C 2.0
编辑
啊,傻.它似乎有助于-cl-std=CL2.0在编译器选项中指定clCreateProgramWithSource.那应该是预期的行为吗?
这是一个小代码,应显示textarea并应显示我输入的内容.但我不知道它为什么不显示文字.当我按住任意键时,水平滚动条会移动,这意味着某些东西在那里,但没有任何东西显示出来.我正在使用JDK 1.8并在Windows 7 64位上使用记事本进行编辑.
public class tarea
{
public static void main (String[] args)
{
Frame f = new Frame("My Frame");
f.setLocation(100, 100);
f.setSize(500, 500);
f.setLayout(null);
f.setBackground(Color.BLACK);
f.setTitle("My area");
TextArea ta = new TextArea();
ta.setBounds(10, 10, 400, 400);
f.add(ta);
f.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 Cloudera Quick Start VM 并在其上运行 hbase。以下是我的疑问:
hbase(main):009:0> create 'test', 'cf'
0 row(s) in 0.4500 seconds
=> Hbase::Table - test
hbase(main):010:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.1950 seconds
hbase(main):011:0> put 'test', 'row3', 'cf:c', 'value4'
0 row(s) in 0.0580 seconds
hbase(main):012:0> scan 'test'
ROW COLUMN+CELL
row3 column=cf:c, timestamp=1414148485533, value=value4
1 row(s) in 0.0420 seconds
hbase(main):013:0> scan 'test', {VERSIONS => 3}
ROW COLUMN+CELL
row3 column=cf:c, timestamp=1414148485533, value=value4
1 row(s) in 0.0370 seconds
hbase(main):014:0> get 'test', 'row3', {COLUMN => 'cf:c', …Run Code Online (Sandbox Code Playgroud) 我想形成一个变量.
如果它不是null或为空或undefined我不想将@符号附加到它:
var T1 = 'Popcorn'
var T2 = 'Icecreams'
var T3 = '';
var T4 = '';
if(T1!=''||T2!=''||T3!=''||T4!='')
reqstr = T1+'@'+T2+'@'+T3+'@'+T4;
alert(reqstr);
Run Code Online (Sandbox Code Playgroud)
现在输出是:
爆米花@冰淇淋@@
如果变量为空,我不想追加@,这意味着我只需要:
爆米花@冰淇淋
小提琴.