【问题标题】:Java - Looping Number StringsJava - 循环数字字符串
【发布时间】:2015-08-20 15:08:56
【问题描述】:

昨天你们都帮我克服了这个问题的第一个困难,我想看看是否有办法修改我的最终产品(如果我的格式关闭,请道歉 - 仍在尝试在我的 IDE 中获得正确的缩进.

导入 javax.swing.JOptionPane;

public class NumberLoops {

    public static void main(String[] args) {

        String strNum1;
        String strNum2;
        int intNum;
        boolean isValid = true;
        boolean isError = false;

        strNum1 = JOptionPane.showInputDialog ("Enter Number String");

        for (int i=0; i<strNum1.length(); i++) {
            char c = strNum1.charAt(i);
            if (c == '-'){
                JOptionPane.showMessageDialog(null, "Negative Digit Found - Enter Positive Numbers Only", "Error", JOptionPane.INFORMATION_MESSAGE);
                isValid = false;
                break;
            }
        }
        if (isValid){
            for (int i=0; i<strNum1.length(); i++) {
                char c = strNum1.charAt(i);
                intNum = Character.getNumericValue(c);{
                    if (intNum > 0 && intNum <= 9){
                        isError = true;
                        break;
                    }
                }
            }
        }
        if (isError){
            int aDigit,totalNum=0;
            char chDigit;
            strNum2 = String.valueOf(strNum1);
            for (int count=0; count<strNum1.length();count++){
                chDigit = strNum2.charAt(count);
                aDigit = Character.getNumericValue(chDigit);
                totalNum += aDigit;
                if (aDigit > 0 && aDigit <= 9){
                    System.out.print(aDigit + " ");
                }
            }
            System.out.print(" " + "The sum is: " + totalNum);
        }
    }
}

我的问题与最后一个循环有关。如果我在消息提示中输入说 123123,它会通过打印到控制台来按需要运行,它会将该字符串列为 1 2 3 1 2 3,然后是 12 的总数。

但那是在控制台本身。我想要解决的问题是让它显示在消息框而不是控制台中。

我猜我需要创建一个新字符串,例如(传入的伪代码):

if (aDigit > 0 && aDigit <= 9){
strNum3 = everycharinStr2 + " "

我想我没有掌握的部分。

仅供参考,这是一个家庭作业,所以我不一定想要一个直接的答案,但我觉得我已经很接近了,我需要多加注意,看看有没有什么我能做的。 (我已经阅读了数组之类的内容,但我们还没有到那个时候,所以我认为我还不会走这条路。)

【问题讨论】:

  • 您的 isError 变量名具有误导性。您将 isError 设置为 true 并在数字介于 1 和 9 之间(含 1 和 9)进行突破。然后,如果 isError 设置为 true,则显示数字和总和。很混乱。如果我不得不猜测,你真正要做的是将isError设置为true,如果你遇到一个不在1和9之间的字符,然后只在isErrorfalse时显示数字和总和.
  • 啊,我刚吃完午饭回来看了看我的东西。你是对的,这令人困惑!我会纠正这个。实际上,只有当数字不在 1 和 9 之间时,它才会出错。

标签: java swing loops


【解决方案1】:

您只需对您的代码做一点改动:

        strNum2 = String.valueOf(strNum1);
        String resultString = "";
        for (int count=0; count<strNum1.length();count++){
            chDigit = strNum2.charAt(count);
            aDigit = Character.getNumericValue(chDigit);
            totalNum += aDigit;
            if (aDigit > 0 && aDigit <= 9){
                System.out.print(aDigit + " ");
                resultString += aDigit + " ";
            }
        }
        JOptionPane.showMessageDialog(null, resultString);

创建一个新的String,并在每次迭代中将数字附加到此String,然后在对话框中显示它。

【讨论】:

  • 这太棒了,正是我想要实现的。我进一步对其进行了修改,以便在将数字相加时包括总数。
  • 太好了,很高兴它有帮助。
【解决方案2】:

错误被注释掉。

                //if (intNum > 0 && intNum <= 9){
                if (intNum < 0 || intNum > 9){
                    isError = true;
                    break;
                }

        //if (aDigit > 0 && aDigit <= 9){
        if (aDigit >= 0 && aDigit <= 9){
            System.out.print(aDigit + " ");
            //resultString+ = aDigit + " ";
            resultString += "" + aDigit;
        }

//if (isError) {
if (!isError) {

【讨论】:

    【解决方案3】:

    只需使用JLabel

    由于您已经在使用 swing,这将是您的最佳选择。但是你需要一个框架和面板,所以如果你还没有,不要这样做。

    JLabel label = new JLabel()
    label.setText("Random Text!")
    

    你也可以这样做,弹出一个窗口:

    JOptionPane.showMessageDialog(null, "My String!");
    

    【讨论】:

      猜你喜欢
      • 2017-03-21
      • 2017-08-21
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多