2015-02-18 5 views
0

Я попытался найти несколько потоков в терминах умножения 2 строк. Однако кажется, что большинство ссылок, которые я нашел, не применимы, или я не мог их интерпретировать достаточно хорошо.Java Умножение 2 целых чисел из строк

Было бы возможно, если бы я мог сказать, что не так с моим текущим кодом?

public static void main(String[] args) { 

    String sample = value1(); 
    String sample2 = value2(); 
      //========== Test if users placed any characters within the boxes =========\\ 
      try { 
       Integer.parseInt(sample); 
      } catch (NumberFormatException e) { 
       System.out.println("System detects that you are using characters"); 
       return; 
      } 
      try { 
       Integer.parseInt(sample2); 
      } catch (NumberFormatException e) { 
       System.out.println("System detects that you are using characters"); 
       return; 
      } 
    Integer.parseInt(sample); 
    Integer.parseInt(sample2); 
    System.out.println("The total multiplication that you have inserted is "+sample * sample2+ "."); 
} 

public static String value1() { //obtain first user input. 

    String sample = JOptionPane.showInputDialog(null, "Insert Value", "Enter amount ", JOptionPane.QUESTION_MESSAGE); 
    if (sample.isEmpty()) { 

     JOptionPane.showMessageDialog(null, "Error!", "No Value Detected", JOptionPane.ERROR_MESSAGE); 
     sample = value1(); 


    } 
    return sample; 

} 

public static String value2() { //obtain second user input. 

    String sample2 = JOptionPane.showInputDialog(null, "Insert Value", "Enter amount ", JOptionPane.QUESTION_MESSAGE); 
    if (sample2.isEmpty()) { 

     JOptionPane.showMessageDialog(null, "Error!", "No Value Detected", JOptionPane.ERROR_MESSAGE); 
     sample2 = value2(); 


    } 
    return sample2; 

}  

}

Мой окончательный вывод должен умножать следующие номера

System.out.println("The total multiplication that you have inserted is "+sample * sample2+ ".");

+2

Похоже, вы действительно хотите размножать * целые числа *, а не строки, и вы уже разбираете строки в значениях int, но затем игнорируете результат. Зачем? –

+0

System.out.println («Полное умножение, которое вы вставили» + Integer.parseInt (образец) * Integer.parseInt (sample2) + "."); – Rustam

+0

На стороне заметьте, не перехватывайте исключения, а затем выдавайте оператор возврата. Просто позвольте этому распространению распространяться. – JamesB

ответ

1

Вы не можете умножить строки вместе. Вы можете умножить номера, и похоже, что это то, что вы хотите сделать. Действительно, вы уже разбираете строки как целые числа, а затем игнорируете результат. Вам просто нужно изменить:

Integer.parseInt(sample); 
Integer.parseInt(sample2); 
System.out.println("The total multiplication that you have inserted is "+sample * sample2+ "."); 

к:

int value1 = Integer.parseInt(sample); 
int value2 = Integer.parseInt(sample2); 
System.out.println("The total multiplication that you have inserted is " 
    + (value1 * value2) + "."); 
+0

Спасибо! это именно то, что я хотел! Просто вопрос, хотя, я считаю, что вы не можете комментировать, как только я заметил ответ, это правильно? Все еще совершенно новый для переполнения стека. – AdamW

+0

@AdamW: Нет, я не знаю никаких ограничений по времени, связанных с этим. –

+0

ah okay, потому что я задавал другие вопросы, и в тот момент, когда я обозначил это как ответ, ответы перестали поступать, а не то, что я помню, хотя это было просто еще одно объяснение того, почему именно предполагалось быть таким. В любом случае, спасибо за ответ! Я буду отмечать это как ответ, так как это самый точный и самый ранний! – AdamW

0

вы пытаетесь умножить две строки не два числа

вы должны использовать так:

System.out.println("The total multiplication that you have inserted is "+ Integer.parseInt(sample) * Integer.parseInt(sample2)+ ".");

+0

спасибо, что указали, что это была моя ошибка с точки зрения названия, должен был набирать умноженное целое число из строки. Ура! – AdamW

0

Вы должны назначить возвращаемое значение Integer.parseInt () к переменным. Переменные, переданные как param, остаются неизменными.

int a = Integer.parseInt(sample); 
int b = Integer.parseInt(sample2); 
System.out.println("The total multiplication that you have inserted is " + a * b + "."); 
0

1-е предложение: не объявляйте 2 метода, которые делают то же самое!

public static String value() { //obtain *first and second* user input. 
    String sample = JOptionPane.showInputDialog(null, "Insert Value", "Enter amount ", JOptionPane.QUESTION_MESSAGE); 
    if (sample.isEmpty()) { 
    JOptionPane.showMessageDialog(null, "Error!", "No Value Detected", JOptionPane.ERROR_MESSAGE); 
    sample = value(); 
    } 
    return sample; 
} 

второе предложение: Не проверять достоверность вашего ввода в обоих методе значение() и основной():

public static int value() { //obtain second user input. 
    String sample = JOptionPane.showInputDialog(null, "Insert Value", "Enter amount ", JOptionPane.QUESTION_MESSAGE); 
    if (sample.isEmpty()) { 
    JOptionPane.showMessageDialog(null, "Error!", "No Value Detected", JOptionPane.ERROR_MESSAGE); 
    return value(); 
    } 
    try { 
    int v = Integer.parseInt(sample); 
    return v; 
    } catch (NumberFormatException e) { 
    System.out.println("System detects that you are using characters"); 
    return value(); 
    } 
} 

для этого 2-й случай, главный становится:

public static void main(String[] args) { 
    int x1 = value(); 
    int x2 = value(); // call again the *same* method 

    System.out.println("The total multiplication that you have inserted is "+x1 * x2+ "."); 
} 
+0

Привет, не могли бы вы объяснить «первое предложение: не объявляйте 2 метода, которые делают то же самое!» Я не совсем понимаю, почему я не должен этого делать. – AdamW

+0

Идея методов - повторное использование кода: напишите его один раз и используйте его много раз. Итак, позвольте мне вернуть вопрос и спросить вас: зачем вы когда-нибудь пишете тот же самый метод дважды, вместо того, чтобы дважды называть его первым? –

Смежные вопросы