返回错误 int 值的变量

编写了以下几行代码,旨在将 2 个值插入到对话框中,并分配给 2 个不同的变量。假设我插入 22,那么它应该在文本字段中显示为 2x2 = 4,相反,它会打印类似 50 x 50 = 2500 的内容。


String a = JOptionPane.showInputDialog("Qual cálculo deseja fazer? (AB = A x B)", "AB");


   aNum = a.charAt(0);

   bNum = a.charAt(1);

   int cNum = aNum*bNum;


    Game.getNumbers(aNum, bNum);


    JOptionPane.showInputDialog(aNum, bNum);


    TF1.setText(Game.First() +" x "+ Game.Second() +" = "+ cNum);

涉及班级:


public class Game1 {


private int first = 0;

private int second = 0;

private int score = 0;

private int hiScore = 0;



public void numTotalCheck(int a){


    String option1 = null;

    char option = 0;


    do{

    if (a == (first*second)){


        JOptionPane.showMessageDialog(null, "Parabéns. Você acertou!");


        score = score + 100;

        if(score > hiScore){


            hiScore = score;

        }

    }else{


        score = score - 100;

        if(score > hiScore){


            hiScore = score;

        }

        JOptionPane.showMessageDialog(null, "Errado!");


        option1 = JOptionPane.showInputDialog("Deseja jogar novamente? <S/N>");

        option = option1.charAt(0);

    }

    }while((option == 's') || (option == 'S'));



}


public void getNumbers(int a, int b){


    first = a;

    second = b;

}


public int First(){


    return first;

}


public int Second(){


    return second;

}

结果:

“22”输入的结果。


慕无忌1623718
浏览 108回答 2
2回答

不负相思意

该函数charAt(index)返回一个 char,然后您可以将其隐式解析为 int。'2' 的 int 值为 50,所以它是 50 * 50 = 2500。一个简单的解决方法是要求输入格式如 A;B。然后你可以执行以下操作:String s =JOptionPane.showInputDialog("Enter two numbers like this: Number A;Number B", "AB");String[] temp = s.split(";");if(temp.length == 2) {&nbsp; try {&nbsp; &nbsp; int aNum = Integer.parseInt(temp[0]);&nbsp; &nbsp; int bNum = Integer.parseInt(temp[1]);&nbsp; &nbsp; int cNum = aNum*bNum;&nbsp; } catch(NumberFormatException nfe) {&nbsp; &nbsp; // One or both of the values weren't ints.&nbsp; }} else {&nbsp; // Some error here, because of too few/ too many values}

HUWWW

您将字符 ( char) 视为数字 ( integer)。这是一个隔离您所看到的内容的示例。此代码采用字符串值“2”并从中获取一个字符,然后打印该字符。char c = "2".charAt(0);System.out.println("c: " + c);--> c: 2如果您尝试相同的操作,但将结果存储为 an int,则存储的值不是同一件事,而是“50”:int i = "2".charAt(0);System.out.println("i: " + i);--> i: 50在幕后,任何字符值都以数字表示,因此字符“2”是整数 50。您可以挖掘 ASCII 图表来查看它们是如何映射的。有很多方法可以修复代码,但由于您已经从字符串值开始,因此获得正确结果的一种方法是使用Integer.parseInt(),如下所示:int parsedValue = Integer.parseInt("2");System.out.println("parsedValue: " + parsedValue);--> parsedValue: 2
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java