[ C# / Java ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by procedure, 2 Nov 2008.

  1. beBoss

    beBoss New Member

    Joined:
    29 Sep 2010
    Messages:
    21
    Likes Received:
    1
    Reputations:
    0
    Well, I know I can ask hit to share me the source, but it's hard to recreate the class ? If is so hard ok, no problem I just thinking that this would be easy :)
     
  2. Vladislav88

    Vladislav88 New Member

    Joined:
    5 Dec 2011
    Messages:
    40
    Likes Received:
    1
    Reputations:
    0
    Извените если уже задавали этот вопрос.
    Решил изучить Java . Читаю учебник и никак не догоняю. Есть код :
    Code:
            class Point { int х, у;
                    Point(int х, int у) {
                            this.x = х;
                            this. y = y;
                            }
    
                    double distance(int х, int у) {
                            int dx = this.x—х;
                            int dy = this.у—у;
                            return Math.sqrt(dx*dx + dy*dy);
                            }
    
                    double distance(Point p) {
                    return distance(p.x, p.y);
                    }
            }
    
            class PointDist {
                    public static void main(String args[]) {
                            Point p1 = new Point(0, 0);
                            Point p2 = new Point(30, 40);
                            System.out.println("p1 = " + pi.x + ", " + p1.y);
                            System.out.println("p2 = " + p2.x + ", " + p2.y);
                            System.out.println("p1.distance(p2) = " +
                                    p1.distance(p2));
                            System.out.println("p1.distance(60, 80) = " +
                                    p1.distance(60, 80));
                            }
                    }
    
    Ответ :
    р1 = 0, 0
    р2 = 30, 40
    р1.distance(p2) = 50.0
    p1.distance(60, 80) = 100.0

    Собствено мой вопрос : что значит р1.distance(p2) и p1.distance(60, 80) и как получился этот ответ. Искал везде где мог , узнал только что это перегруженые методы но систему работы так и не понял. Обьясните пожалуйста как это работает.
    Очень всем благодарен.
     
    #1282 Vladislav88, 24 Mar 2012
    Last edited: 24 Mar 2012
  3. return

    return New Member

    Joined:
    23 Oct 2010
    Messages:
    125
    Likes Received:
    3
    Reputations:
    1
    Vladislav88 ты про этот класс? Если да, то
    р1.distance(p2) это метод класса Point который был переопределён в твоём примере и в качестве параметра передаётся объект класса Point и вызывается метод distance(int х, int у) , p1.distance(60, 80) тоже самое только передаётся два целочисленных параметра. Ничего ж сложного, а как ответ получился?! так ведь в методе distance производятся вычисления ;)
    Надеюсь ответил на вопросы.
     
  4. Vladislav88

    Vladislav88 New Member

    Joined:
    5 Dec 2011
    Messages:
    40
    Likes Received:
    1
    Reputations:
    0
    return , большое тебе спасибо за ответ , ты мне обьяснил, а я голову ломал , наверное из за того что слишком долго учился без перерыва.Небыл уверен что вычесления происходят в distance + не врубался откуда берутся p1 и p2 , а сейчас я понял что это 30,40 и я не знал что делает функция Math.sqrt , я думал там просто надо умножить и прибавить , вобщем я все проверил , все сходиться , я наконецто догнал. Большое спасибо тебе за отзывчивость. :)
     
  5. Vladislav88

    Vladislav88 New Member

    Joined:
    5 Dec 2011
    Messages:
    40
    Likes Received:
    1
    Reputations:
    0
    Еще вопрос , уже давно не могу решить эту проблему с классами. Когда имеется 1 класс и я копирую его с учебника в Netbeans то все работает , а когда несколько классов то Netbeans выдает ошибку и не исполняет программный код. Что надо настроить в Netbeans чтобы получить результат кода с несколькими класами.
    Вот код :
    Code:
    interface SharedConstants {
        int NO = 0; 
        int YES = 1; 
        int MAYBE = 2; 
        int LATER = 3; 
        int SOON = 4; 
        int NEVER = 5;
        } 
    
    class Question implements SharedConstants { 
        Random rand = new Random(); 
        int ask() { 
            int prob = (int) (100 * rand.nextDouble()); 
            if (prob < 30)  return NO; // 30%
            else if (prob < 60) return YES; // 30%
            else if (prob < 75) return LATER; // 15%
            else if (prob < 98) return SOON; // 13%
            else return NEVER; // 2% 
            }
        } 
    
    class AskMe implements SharedConstants { 
        static void answer(int result) { 
            switch(result) { 
                case NO: 
                    System.out.println("No"); 
                    break; 
                case YES: 
                    System.out.println("Yes"); 
                    break; 
                case MAYBE: 
                    System.out.println("Maybe"); 
                    break; 
                case LATER: 
                    System.out.println("Later"); 
                    break; 
                case SOON: 
                    System.out.println("Soon"); 
                    break; 
                case NEVER: 
                    System.out.println("Never"); 
                    break; 
                }
            } 
    
    public static void main(String args[]) {   
        Question q = new Question(); 
            answer(q.ask()); 
            answer(q.ask()); 
            answer(q.ask()); 
            answer(q.ask()); 
            }
        } 
    Когда просто создаю класс с названием Random или любым другим код не испольняется и выдает ошибку. Я уже не знаю что делать , как назвать класс , надо создать несколько классов ? Что не делаю всеравно ошибки. В google тоже ничего на эту тему не нашел :( Что нужно сделать чтобы все заработало?
    Спасибо.
     
    #1285 Vladislav88, 25 Mar 2012
    Last edited: 25 Mar 2012
  6. return

    return New Member

    Joined:
    23 Oct 2010
    Messages:
    125
    Likes Received:
    3
    Reputations:
    1
    Vladislav88 скопировал твой код себе в Netbeans и всё прекрасно скомпилирвоалось. Какую ошибку у тебя выдаёт при компиляции?
     
  7. Vladislav88

    Vladislav88 New Member

    Joined:
    5 Dec 2011
    Messages:
    40
    Likes Received:
    1
    Reputations:
    0
    Return спасибо за отзывчивость.
    Пока писал сообщение с ошибкой копмиляции все получилось )) Спасибо, ты мне очень помог . Я думал ошибки в коде. Надо было назвать класс AskMe. Извеняюсь за такие вопросы, действительно долго ничего не получалось.
    return, а как мне знать какой главвный класс чтобы правильно в netbeans создать имя классу. Это самый нижний или в котором println?
     
    #1287 Vladislav88, 27 Mar 2012
    Last edited: 27 Mar 2012
  8. return

    return New Member

    Joined:
    23 Oct 2010
    Messages:
    125
    Likes Received:
    3
    Reputations:
    1
    Vladislav88 главным классом считается тот в котором есть точка входа в мейн (public static void main()) соответственно у тебя это AskMe. Ну и package должен называться тоже AskMe.
     
  9. pcacer

    pcacer New Member

    Joined:
    29 Mar 2012
    Messages:
    12
    Likes Received:
    1
    Reputations:
    0
    Подскажите плиз, C#. Задание на работу с таймером и datagridview. Так вот у меня есть таблица алфавит в datagridview, как сделать так, чтобы при вводе в textbox, допустим слова "абв", он последовательно(timer) выделялся в таблице? :confused:
     
  10. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Чито?
    Обьясни толком задание.Насколько я понял из вышеописанного :
    1. У тебя есть datagrieview, в которой находиться алфавит: ячейка0 - а, ячейка1 - б, ячейка3 - в ....
    2.У тебя есть textbox,в который юзер заносит буквы алфавита.
    Внимание вопрос: кто или что должно выделяться и где? И причем здесь таймер?
     
  11. pcacer

    pcacer New Member

    Joined:
    29 Mar 2012
    Messages:
    12
    Likes Received:
    1
    Reputations:
    0
    допустим в textBox я ввел строку, буквы этой строки должны выделиться в моей таблице, это я сделал, теперь необходимо чтобы с помощью таймера выделялась каждая буква поочереди, то есть если первая буква в строке в, то она, затем, через 1 сек вторая буква и т.д.
     
  12. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    А, понял.Смотри:
    1. Создаёшь датагрид и добавляешь в него ячейки(или столбцы, на твое усмотрение) по количеству букв в алфавите. Можешь посмотреть тут как это делается.
    2. Вешаешь на textbox TextChanged,то есть будет вызываться каждый раз, когда в textbox будут происходить изминения.
    3.Просматриваешь символы массива из textbox и сразу отделяешь буквы

    string ch = textbox1.Text;
    bool test;
    for (int i = 0; i < anz; i++)
    {
    test = char.IsLetter(ch, i);//если буква то возвращается true.
    if(test == true)
    {
    //Здесь осуществляем поиск буквы по ячейкам datagrid, когда находим совпадение, то просто меняем цвет текста в ячейке

    cell[number].Foreground="Aqua";
    //Что бы создать задержку во времени, создай отдельный поток под это дело и играйся с ним, вот ссыль

    }
    }
     
  13. pcacer

    pcacer New Member

    Joined:
    29 Mar 2012
    Messages:
    12
    Likes Received:
    1
    Reputations:
    0
    еще вопрос! таблица datagridview, как обратиться к элементу, находящемуся на пересечении двух других,(т.е первый столбец допустим ось у, а первая строка ось х)к элементам на "осях" я обратился, а как теперь обратиться к их пересечению?
     
  14. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Хмм??Я опять недопонял, ты имеешь ввиду, например: получить текст с 10 строчки, 3 ячейки?
    тогда так:
    Code:
    string CellResult = dataGridView1.Rows[9].Cells[3].Value.ToString();
     
  15. pcacer

    pcacer New Member

    Joined:
    29 Mar 2012
    Messages:
    12
    Likes Received:
    1
    Reputations:
    0
    12345 Допустим такая таблица, так вот мне
    22345 необходимо выделить в первой строки какую
    33291 либо цифру и в первом столбце, и на их
    46543 пересечении выделить другим цветом, то есть
    57878 если в первой строке выделю 4, а в столбце 3, то на их пересечении стоит 9, так вот ее и выделить.
     
  16. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1

    все просто, для этого тебе нужно 2 индекса:
    1 индекс - ячейка(Cells) первой строки в которой стоит нужный нам результат. Окрестим как i.
    2 индекс - номер строки(Rows) или индекс значения в столбце. Окрестим как j.

    И того у нас выходит, что бы выделить значение в ячейки находящейся на пересечении:

    dataGridView1.Rows[j].Cells.Style.BackColor = Color.Aqua;

    И цвет меняется в ячейки находящейся на пересечении координат.
     
  17. pcacer

    pcacer New Member

    Joined:
    29 Mar 2012
    Messages:
    12
    Likes Received:
    1
    Reputations:
    0

    вот код для алфавита. в textbox1 я ввожу слово, оно подсвечивается красным, в textbox2 другое слово оно - синим. а label1, должен выделяться зеленым на их пересечении и он выделяется, но почему то он выделяет всю диагональ, содержащей данный символ
    {
    int n = 0;
    string[] abc = { "а", "б", "в", "г", "д", "е", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ь", "ы", "ъ", "э", "ю", "я" };
    dataGridView1.RowCount = 33;
    dataGridView1.ColumnCount = 33;
    for (int i = 1; i < dataGridView1.ColumnCount; i++)
    {
    for (int j = 1; j < dataGridView1.RowCount; j++)
    {
    dataGridView1[i, 0].Value = abc[i-1];
    dataGridView1[i, 0].Style.BackColor = Color.Gray;
    dataGridView1[0, j].Value = abc[j-1];
    dataGridView1[0, j].Style.BackColor = Color.Gray;
    dataGridView1[i, j].Value = abc[n];
    n++;
    if (n > 31)
    n = 0;
    for (int k = 0; k < textBox1.Text.Length; k++)
    {
    for (int l = 0; l < textBox2.Text.Length; l++)
    {
    if (textBox1.Text[k] == Convert.ToChar(dataGridView1.Rows[j].Cells[0].Value))
    dataGridView1[i, 0].Style.BackColor = Color.Red;
    if (textBox2.Text[l] == Convert.ToChar(dataGridView1.Rows[0].Cells.Value))
    dataGridView1[0, j].Style.BackColor = Color.Blue;
    for (int m = 0; m < label1.Text.Length; m++)
    {
    if (label1.Text[m] == Convert.ToChar(dataGridView1.Rows[j].Cells.Value))
    dataGridView1.Rows[j].Cells.Style.BackColor = Color.Green;
    }
    }
    }
    }
    if (textBox1.Text == " ")
    dataGridView1[i, 0].Style.BackColor = Color.White;
    n++;
    if (n > 31)
    n = 0;
    }


    }
     
    #1297 pcacer, 4 Apr 2012
    Last edited: 4 Apr 2012
  18. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1


    Скинь твой полный код, то что ты вылоил весьма неудобочитаем, он даже без подсветки.
    И пиши мне лучше в личку, не будем засорять тему.
     
  19. bagon66

    bagon66 Banned

    Joined:
    28 Jun 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Подскажите пожалуйста!
    Хочу прописать переменную типа string в MessageBox и все время ошибка.
    [​IMG]
     
  20. pcacer

    pcacer New Member

    Joined:
    29 Mar 2012
    Messages:
    12
    Likes Received:
    1
    Reputations:
    0
    private void button1_Click(object sender, EventArgs e)
    {
    string ilya;
    ilya = "Илья";

    MessageBox.Show("Привет "+ ilya);
    }
     
Loading...
Similar Threads - Java начинающим задаем
  1. b3
    Replies:
    4
    Views:
    3,202