2015-06-05 5 views
4

Вы все вчера были настолько полезны, что преодолели мой первый горб в этой проблеме, что я хотел посмотреть, можно ли изменить мой конечный продукт (извинения, если мое форматирование выключено - все еще пытаюсь получить углубления исправить в моем IDEJava - Looping Number Strings

импорт 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 + " " 

Какая часть я предполагаю, что я не хватать.

FYI, это домашнее задание, поэтому я не обязательно хочу прямой ответ, но я чувствую, что настолько близок, что мне нужны дополнительные глаза, чтобы увидеть, есть ли что-нибудь, что я могу сделать. (Я читал о массивах и т. Д., Но мы пока не находимся, поэтому я не думаю, что пока еще не пройду по этой дороге.)

+0

Неверное имя переменной 'isError'. Вы устанавливаете 'isError' в' true' и выходите, если число от 1 до 9 включительно. Затем вы показываете цифры и суммируете, если для параметра 'isError' установлено значение' true'. Очень смущает. Если бы я должен был догадаться, то, что вы действительно хотите сделать, это установить 'isError' в' true', если вы столкнулись с символом, который НЕ находится между 1 и 9 включительно, а затем отображает только числа и сумму, если 'isError' является' false' , –

+0

Ах, я только заметил, что после того, как вернулся с обеда и посмотрел на то, что у меня было. Вы правы, это сбивает с толку! Я исправлю это. Фактически предполагается, что ошибка будет только в том случае, если число не находится между 1 и 9. –

ответ

2

Вы только должны сделать небольшие изменения в коде:

 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, а затем показывает его в диалоговом окне.

+0

Это чудесно, именно то, чего я пытался достичь. Я изменил его еще дальше, чтобы включить общее количество, когда числа добавлены. –

+0

Отлично, рад, что это помогает. –

0

Просто используйте JLabel!

Поскольку вы уже используете свинг, это будет вашим лучшим выбором. Но тогда вам понадобится рамка и панель, поэтому, если вы этого еще не сделали, не делайте этого.

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

Вы также можете сделать это, с всплывающим:

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

Ошибки закомментированы.

   //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) {