为了账号安全,请及时绑定邮箱和手机立即绑定

返回错误 int 值的变量

返回错误 int 值的变量

慕无忌1623718 2024-01-17 20:49:54
编写了以下几行代码,旨在将 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”输入的结果。
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

该函数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) {

  try {

    int aNum = Integer.parseInt(temp[0]);

    int bNum = Integer.parseInt(temp[1]);

    int cNum = aNum*bNum;

  } catch(NumberFormatException nfe) {

    // One or both of the values weren't ints.

  }

} else {

  // Some error here, because of too few/ too many values

}


查看完整回答
反对 回复 2024-01-17
?
HUWWW

TA贡献1874条经验 获得超12个赞

您将字符 ( 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


查看完整回答
反对 回复 2024-01-17
  • 2 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信