- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在计算机科学讲座中尝试了一些东西,然后突然遇到了一个有趣的问题。
这是我的主要代码,
public void run(){
setSize(800, 600);
for(int i=0; i<= 30; i++){
elips el = new elips();
el.setFilled(true);
el.setColor(Color.RED);
elipsler.add(el);
add(el);
}
while(!stopthat){
for(int i=0; i< elipsler.size() -1; i++){
elipsler.get(i).cdRemove();
println("asd");
if(elipsler.get(i).canRemove == true){
remove(elipsler.get(i));
elipsler.remove(i);
elips el = new elips();
el.setFilled(true);
add(el);
elipsler.add(el);
}
}
}
}
这就是我的椭圆类。
public class elips extends GOval{
static int x, y, w, h;
int cd;
public boolean canRemove = false;
Random rand = new Random();
public elips(){
super(x, y, w, h);
canRemove = false;
cd = rand.nextInt(100);
x = rand.nextInt(780) + 20;
y = rand.nextInt(580) + 20;
w = rand.nextInt(80) + 20;
h = rand.nextInt(80) + 20;
}
public void cdRemove(){
if(this.cd <= 0){
this.canRemove = true;
}else{
this.cd--;
}
}
}
如您所见,我正在创建椭圆并给它们“删除冷却时间”,冷却结束后椭圆会销毁。问题是如果我删除 println("asd") 行,代码将无法正常工作。也就是说,如果我删除该行,省略号会同时出现和消失(冷却不起作用)。
所以我想知道“println”行如何解决这个问题?
最佳答案
从 100 倒数到 0 几乎是在零时间内完成的,这实际上就是您在删除椭圆之前所做的事情。添加 println 时看到椭圆的原因是因为它需要一些少量的时间来打印。一百次,你就得到了几毫秒的椭圆。
您想要做的是将原始倒计时替换为某种实际的计时器。 <罢工> Stopwatch会做的工作。 (显然,我之前建议的 DateTime 在低至几毫秒时并不那么准确) 我一直在用 C# 思考。在java中,使用System.currentTimeMillis()是正确的方法。
ninja:如果您需要,我将在今天晚些时候提供代码
编辑:现在,您实际上正在执行以下操作:
add ellipse
for(int i = 0; i < 100; i++)
{
// nothing happening in here, this entire loop takes zero time
}
remove ellipse
并使用println
:
add ellipse
for(int i = 0; i < 100; i++)
{
println("asd");
// something happening in here, this entire loop takes a little bit of time
}
remove ellipse
这种冷却系统会在多个方面成为一个问题:
所以,这是一个测量时间的选项:
public class elips extends GOval{
static int x, y, w, h;
int cd;
public boolean canRemove = false;
Random rand = new Random();
long timeStart;
public elips(){
super(x, y, w, h);
canRemove = false;
cd = rand.nextInt(100);
x = rand.nextInt(780) + 20;
y = rand.nextInt(580) + 20;
w = rand.nextInt(80) + 20;
h = rand.nextInt(80) + 20;
timeStart = System.currentTimeMillis();
}
public void cdRemove(){
if(System.currentTimeMillis() > timeStart + cd)
this.canRemove = true;
}
}
并且:
public void run(){
setSize(800, 600);
for(int i=0; i<= 30; i++){
elips el = new elips();
el.setFilled(true);
el.setColor(Color.RED);
elipsler.add(el);
add(el);
}
while(!stopthat){
// now you can do stuff here that will not be delayed by the ellipse cooldowns
// neither will it become part of the ellipse cooldowns
for(int i=0; i< elipsler.size() -1; i++){
elipsler.get(i).cdRemove();
if(elipsler.get(i).canRemove == true){
remove(elipsler.get(i));
elipsler.remove(i);
elips el = new elips();
el.setFilled(true);
add(el);
elipsler.add(el);
}
}
}
}
这可能会发生一些变化,我的校对速度很快。
编辑 2:我在 C# 中思考秒表和所有内容,现在解决了这个问题。
关于java - 写入 "println"修复了我的代码,怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28584249/
我都见过,事实上,在观察后我并没有意识到有什么区别。但两者之间真的有什么区别 println(); // without quotation marks 和 println(""); // wi
当运行这个 java 程序时,我希望输出只是第一个 println,因为其他方法,quaffle 和 snitch 只返回整数。但是,该程序的输出还包括 quaffle 和 snitch 方法的 pr
我开始学习 jsp 并且我看到,如果我们想在 jsp 中打印一些东西,我们必须编写 out.println() 而不是 System.out.println() ,但是如果我们编写 System.ou
我刚刚写了这段代码: public class T { public String toString() { System.out.println("new line");
我一直在研究 Swift,刚刚遇到了一个问题。我有以下词典: var locations:Dictionary = ["current":CLLocationCoordinate2D(latitude
我有这个代码: System.err.print("number of terms = "); System.out.println(allTerms.size()); System.err
我一直在研究 Swift,刚刚遇到了一个问题。我有以下词典: var locations:Dictionary = ["current":CLLocationCoordinate2D(latitude
我无法解释竞争检测器中 println 和 fmt.Println 的不同输出。我希望两者都是种族,或者至少两者都不是种族。 package main var a int func f() {
我一直以为Predef.println只是 System.out.println 的快捷方式,但显然我错了,因为它似乎没有使用 System.out根本不。为什么会这样?我该如何“重定向” Syste
我有一个字符串数组: val str:Array[String] = Array("aa","bb") scala> str.foreach(println) // works aa bb scala
这个问题已经有答案了: Move console cursor to specified position (4 个回答) 已关闭 7 年前。 我正在使用简单的 println 行在 java 上工作
这是我现在正在做的一个简单测试用例的代码: private static final ByteArrayOutputStream OUTCONTENT = new ByteArrayOutputStr
public static void algorithmOne(int n){ long startTime = System.currentTimeMillis(); sea
我有以下代码: @Test public void testMultipleUpdatesSameTime() { final CyclicBarrier gate = new Cyc
我正在尝试创建一个可打印的命令提示板,以便在 CMD 中创建一个 TicTacToe 游戏。虽然,当我为我的董事会和我的单元格创建类(class)时,Java 在我的 print 和 println
我有 char c1 = 'S'; // S as a character char c2 = '\u0068'; // h in Unicode char c3 = 0
这是我的代码(golang) func main() { names := []string{"1", "2", "3"} for index, name := range names
来自 log.go (日志包的实现): 167 // Println calls l.Output to print to the logger. 168 // Arguments are handl
为什么我需要使用 System.out.println而不是 println当我使用 GroovyInterceptable ? 例如,如果我在 Groovy 文件中编码,我可以通过键入以下内容打印到
当我编写计算器应用程序时,我只是想不出最好的方法是什么: private void calculate(String command) { System.out.print("value1:
我是一名优秀的程序员,十分优秀!