小编Ung*_*uer的帖子

如何正确使用goto语句

我正在上高中AP计算机科学课.

我决定向goto我们的一个实验室发表声明,只是为了玩,但我得到了这个错误.

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    Syntax error on token "goto", assert expected
    restart cannot be resolved to a variable
at Chapter_3.Lab03_Chapter3.Factorial.main(Factorial.java:28)
Run Code Online (Sandbox Code Playgroud)

goto在Stackoverflow上找到了一个问题,以了解如何正确地完成它,并且我完全按照其中一个答案进行了演示.我真的不明白为什么编译器需要一个assert语句(至少这是我想的它),我也不知道如何使用assert.它似乎希望重启部分goto restart;是一个变量,但重启只是一个标签,将程序拉回到第10行,以便用户可以输入有效的int.如果它想重新启动变量,我该怎么做?

import java.util.*;

public class Factorial 
{
    public static void main(String[] args) 
    {
        int x = 1;
        int factValue = 1;
        Scanner userInput = new Scanner(System.in);
        restart:
        System.out.println("Please enter a nonzero, nonnegative value to be factorialized.");
        int factInput = userInput.nextInt();

        while(factInput<=0) …
Run Code Online (Sandbox Code Playgroud)

java loops goto

27
推荐指数
4
解决办法
19万
查看次数

equalsIgnoreCase()与toUpperCase()的效率.equals和toLowerCase().equals

标题说明了一切.我的问题是关于不同String等效方法的效率.我经常使用,.equalsIgnoreCase(String str)因为我只是有一个东西.但我开始怀疑它是否可能不是找到它们之间等效性的最有效方法Strings.在我看来,它.equalsIgnoreCase(String str)正在调用一个案例转移方法,toUpperCase或者toLowerCase调用equals它的定义,但我可能错了.那么,在下列情况下,哪种方法更有效,或者在任何情况下都是如此?

int count = 0;//checks for face cards at indexes listed in selectedCards
              // Selected cards is Integer ArrayList

    for(; (count < selectedCards.size() && count < 3); count++)
    {
        if(cardAt(selectedCards.get(count)).rank().equalsIgnoreCase("Queen"))
            count++;
        else if(cardAt(selectedCards.get(count)).rank().equalsIgnoreCase("King"))
            count++;
        if(cardAt(selectedCards.get(count)).rank().equalsIgnoreCase("Jack"))
            count++;
    }

    if(count == 3)
        return true;
    return false;
Run Code Online (Sandbox Code Playgroud)

java string performance

10
推荐指数
3
解决办法
7672
查看次数

在switch语句中以默认情况继续

如果我有这个:

do {
    int x = scannerScan.nextInt();

    switch(x)
    {
        case 1:
            System.out.println("Stuff");
            break;
        case 2:
            System.out.println("Pink cows are fluffy and can fly.");
        default:
            continue;
    }
}
while(true);
Run Code Online (Sandbox Code Playgroud)

如果要达到默认情况会发生什么?我试图在互联网和Stackoverflow上找到东西,但是在与Java语言有关的默认情况下找不到有关继续的任何内容.

java switch-statement

8
推荐指数
3
解决办法
5428
查看次数

是否有可能让一个班级有多个超类?

我正在使用Swing为我的高中编程类创建一个令人难以置信的原始二十一点游戏,因此,我的所有资源类都扩展了JPanel.我创建了以下资源类:

  • DealerBox
  • ClubsBox
  • SpadesBox
  • HeartsBox

我的问题是我想创建一些像我这样的公共整数

public int DealerTotal, ClubsTotal, SpadesTotal, HeartsTotal;
Run Code Online (Sandbox Code Playgroud)

我想这样做,所以我可以追踪每个人的价值观,并确定赢家和输家.我有一个灯泡响了,并认为让Dealerbox成为Clubs,Spades和Hearts的超级类是我所有麻烦的解决方案,因为我可以让超类中的简单代码获取上述整数的值并执行我需要的所有检查.

所以我为我的一个子类写了这个:

public class ClubsBox extends JPanel, DealerBox implements Runnable
{
//fun code 
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是我不断收到错误.我认为它与将ClubsBox列为JPanel和DealerBox的子类有关.所以我stackoverflowed我的问题,并找到一个答案,声明一个人不能有一个有2个超类的类.对类似问题的另一个答案是,一个COULD有一个有两个超类的类.

现在我们来看一个主要问题:是否有可能拥有一个有两个超类的类?如果是这样,我该如何编码呢?如果没有,是否有办法绕过限制?

编辑:2014年4月21日,原始邮寄后44分钟

我有一个新问题.我使用了每个人都建议的方法,即让DealerBox扩展JPanel然后让其他所有东西扩展DealerBox.我的GUI来自于: 链接之前的GUI

对此:

链接后的GUI 底部显然非常难以搞砸.不知何故,来自其他地区的标签最终被复制,并且东西混杂在一起.如果您需要代码让我知道,但我需要认真帮助解决这个问题.

请记住,继承树看起来像这样:

InhertianceTree

java inheritance swing subclass superclass

4
推荐指数
1
解决办法
2万
查看次数

Random.nextDouble()可以返回包含值吗?

我正在玩这个Random类的nextDouble()方法,如下所示.我希望在[-50.0,50.0]区间nextDouble()返回一个伪随机double值,然而,在运行循环10亿次后,输出结果出来了maximum: 49.99999995014588 minimum: -49.99999991024878.我在没有输出间隔操作的情况下运行循环,我得到了maximum: 0.9999999998979311 minimum: 0.0.我发现这很奇怪,因为我对0.0返回的所做的只是乘以100.0并从中减去50.0.为什么下面的代码片段永远不会返回-50.0?

编辑:为了好玩,我又循环了5亿次,输出现在是:maximum: 49.99999994222232 minimum: -49.999999996750944.

import java.util.Random;

public class randomTest{

public static void main(String[] args) {

    double max = 0;
    double min = 0;
    Random math = new Random();
    for(int a = 0; a < 1000000000; a++) {
        double rand = math.nextDouble() * 100.0 - (100.0 / 2.0);
        max = Math.max(max, rand);
        min = Math.min(min, rand);
    }
    System.out.println("maximum: …
Run Code Online (Sandbox Code Playgroud)

java random

4
推荐指数
1
解决办法
2403
查看次数

do-while循环问题

请注意,虽然我对Java感到满意,但我并不是特别有天赋,也不知道所有的行话,所以请用很少的编码器行话和正常的英语解释你的答案,或解释你使用它后的行话意味着什么.此外,这是我第一次使用Stackoverflow,所以让我知道这是一个不错的问题,并给我一些指示.

我正在上高中读AP计算机科学课.我们使用Java.我们最近教过do-while循环,我刚刚完成了使用do-while循环的"lab",但是,有一个问题.

首先,让我解释一下实验室.程序生成一个1-10之间的随机整数,用户必须猜测(猜测是使用扫描仪存储为int),有几个整数值跟踪猜测数量,多少猜测大于计算机整数,以及有多少太低了.当你查看我的代码时,你会发现我有一个System.out.println(compGen);//compGen is the computer generated int.目的是测试代码.

问题出在比较userGen(用户猜测)和compGen的if语句中.

if(userGen==compGen)
{
//do a lot of stuff
}
Run Code Online (Sandbox Code Playgroud)

在这个if语句中,如果用户不止一次猜到,它就不会打印我写的正确的SOP.但是,我没有把这个写入程序,它似乎是自己做的.我使用了早期提到的SOP,其中打印了compGen int,我输入的是我的第一个猜测,它完美地工作.if语句块中的所有内容都完美执行并正确打印所有内容.然而,当我把它作为我的第二个猜测,第三个猜测或任何不是第一个的猜测时,打印出了NOTHING.请参阅下面的代码并运行它.我不相信这会有所作为,但我使用的IDE是Eclipse,因此是package语句.请帮忙.

    package Chapter_3.Lab03_Chapter3;
    import java.util.*;

public class Guess 
{
    public static void main(String[] args) 
    {   
    Scanner userInput = new Scanner(System.in);//Scanner
    int compGen = (int)(Math.random()* 10 + 1);//compGen is computer number
    System.out.println(compGen); //USED TO VERIFY FAILURE. VALUE WAS ENTERED TO TEST CODE
    int guessTrack = 0;//tracks number of guesses
    int tooHighTrack = 0;//CREATING INTS TO TRACK STUFF
    int tooLowTrack = 0; …
Run Code Online (Sandbox Code Playgroud)

java loops do-while

3
推荐指数
1
解决办法
190
查看次数