2016-03-04 4 views
0
import java.awt.*; 
import java.applet.*; 

public class userin extends Applet 
{ 
TextField text1, text2; 
public void init() 
{ 
    text1 = new TextField(8); 
    text2 = new TextField(8); 
    add (text1); 
    add (text2); 
    text1.setText ("0"); 
    text2.setText ("0"); 
} 
public void paint (Graphics g) 
{ 
    int x = 0, y = 0, z = 0; 
    String s1, s2, s; 
    g.drawString("input a number in each box", 10, 50); 
    try 
    { 
     s1 = text1.getText(); 
     x = Integer.parseInt(s1); 
     s2 = text2.getText(); 
     y = Integer.parseInt(s2); 
    } 
    catch (Exception ex) { } 
    z = x + y; 
    s = String.valueOf (z); 
    g.drawString ("THE SUM IS:", 10, 75); 
    g.drawString (s, 100, 75); 
} 
public boolean action (Event event, Object object) 
{ 
    repaint (); 
    return true; 
} 

} 

Следующий код хорошо работает на окнах и дает сумму в 2 числа, но когда я использую его на mac в Netbeans или Eclipse, код запускается, но суммируется всегда 0. Я не знаю, что вызывает эту проблему. Было бы мило, если бы кто-то мог помочь.Добавление двух чисел с помощью апплета на Mac всегда дает сумму как 0

+0

1) Зачем писать апплет? Если это связано с тем, что учитель указал на это, обратитесь к [Почему учителя CS должны ** останавливаться ** преподавать Java-апплеты] (http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should -stop-учебно-ява-апплеты /). 2) См. [Поддержка устаревших Java-плагинов] (http://www.gizmodo.com.au/2016/01/rest-in-hell-java-plug-in/) и [Переход в плагиновую сеть] (https://blogs.oracle.com/java-platform-group/entry/moving_to_a_plugin_free). .. –

+0

.. 3) Зачем использовать AWT? См. [Этот ответ] (http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978) по многим причинам, чтобы отказаться от использования AWT с использованием компонентов в пользу Swing. –

ответ

4

Единственная причина, которая может вызвать это исключение брошено в вашем try блоке, который вы ловите игнорирования:

try { 
    ....... 
} catch (Exception e) {} 

Это чрезвычайно плохая практика, чтобы написать пустой catch блок, потому что вы на самом деле скрываются проблемы с сам.

Во-первых, просто удалить try/catch на всех или исключения печати:

try { 
     ........... 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

Теперь вы будете видеть вашу проблему. Я думаю, это NumberFormatException, выброшенное из Integer.parseInt(), и это вызвано неправильным вводом пользователя.

Я считаю, что это не проблема различного поведения на разных платформах, а разные входные данные, которые вы вводили на каждом из тестов.

+0

Но я просто вводил целые числа в обоих текстовых полях, а затем почему это неправильно. Тот же код работает без проблем в Windows – Kamesh

+0

Вы пытались сделать то, что я предложил вам увидеть исключение? – AlexR

+0

Просто удалите свой try/catch, получите исключение и опубликуйте его здесь. Думаю, причина будет очевидна. Я могу предположить, что это такое, но я не хочу этого делать, прежде чем я увижу исключение. – AlexR