LinuxForum.Fans
Тема

Помогите с изучением Java

Автор: u505 49 сообщений 16464 просмотров
#54115

Ну тогда

text

package ru.etel.sts.lab1

Но, если вы еще не учили про пакеты, не надо заморачиваться, а то спросят, а ты не знаешь. Или тогда самостоятельно изучить.
Добавлю по первой задаче, вы исключительные ситуации изучали уже? Если так, то наверное нужно обрабатывать случай, когда пользователь ввел не число.
Со второй задачей посложнее, т.к. я забыл, что такое единичный круг и что означает лежит в единичном круге. Попадание точки на окружность - это в круге или уже не в круге?
Мне решать или подождать тебя и проверить?

#54126
mycetophylax написал:
Со второй задачей посложнее, т.к. я забыл, что такое единичный круг и что означает лежит в единичном круге.

Это орт, единичный вектор относительно нулевой координаты. При чем тут java, честно говоря, не понял. На фортране такую задачу решать - это да

#54179

mycetophylax написал:
Со второй задачей посложнее, т.к. я забыл, что такое единичный круг и что означает лежит в единичном круге. Попадание точки на окружность - это в круге или уже не в круге?
Мне решать или подождать тебя и проверить?
Я как бы сам не могу понять про единичный круг oO
#54186
mycetophylax написал:
Со второй задачей посложнее, т.к. я забыл, что такое единичный круг и что означает лежит в единичном круге. Попадание точки на окружность - это в круге или уже не в круге?

Если верить всезнающей Википедии, то попадание на окружность "не считается". В общем, решение на одну строку выходит.

#54198
Iskan Der написал:
В общем, решение на одну строку выходит.

Ну в принципе так и должно быть, это самые-самые первые задачи при изучении основ Java (и многих других языков).

Получается, что надо просто проверять, что x^2 + y^2 < 1. Решай. :D

#54662

если x^2 это "икс в квадрате", то вопрос:
каким образом возвести в степень?

#54674
ST написал:
если x^2 это "икс в квадрате", то вопрос:
каким образом возвести в степень?

Есть очень хороший класс, называется Math. Находится в пакете java.lang, импортируется автоматически. Есть у него куча статических методов. Статические означает, что не нужно создавать объект класса для того, чтобы ими воспользоваться. Интересующий тебя метод

text

static double Math.pow(double a, double b)

т.е. для возведения переменной x в квадрат

text

Math.pow(x, 2)
#54884
text
1 //package ru.etel.sts.lab1;
2
3  public class Function2{
4    public static void main(String []args){
5
6    double x;
7    double y;
8    double M = Math.pow(x,2) + Math.pow(y,2);
9    boolean z;
10
11    if (M < 1) z = true;
12        else z = false;
13    System.out.println("Z is " + z);
14    }
15 }

первую строку закоментировал потому что:
[console]aleksandr-makurins-macbook-pro:Lesson1 aleksandrmakurin$ java Function2
Exception in thread "main" java.lang.NoClassDefFoundError: Function2 (wrong name: ru/etel/sts/lab1/Function2)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:675)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:316)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:280)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374)[/console]

Не стал реализовывать ввод переменных с клавиатуры.

#55118
ST написал:

String []args

Это означает массив строк и лучше писать

text

String[] args
или
String args[]

Но предпочтительней первый вариант.

ST написал:

первую строку закомментировал потому что:

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

#55139

Если что-то еще нужно будет проверить, пиши. Я подписался на эту тему, когда-то придет предел и моим знаниям, но я вижу, что не скоро :D .

#55253
mycetophylax написал:
[quote=ST]первую строку закомментировал потому что:

Ага, все правильно ошибка и должна была быть. Ну да ладно, пока не заморачивайся.[/quote]
Напрасно, с classpath'ами и сопутствующими темами лучше разобраться сразу, чтобы потом не было мучительно больно :)

#57278

напишите цикл, вычисляющий факториал заданного натурального числа

чесно говоря с высшей математикоя у меня не очень

#57305

ST написал:
чесно говоря с высшей математикоя у меня не очень
Это вроде не высшая :cool:
text
import java.util.Scanner;

/** * Calculate factorial for given number */ public class Factorial {

/** * Evaluates factorial by "for" loop * @param n given number * @return n! */ public static int iterativeFactorial1(int n) { int result = 1; if (n == 0 || n == 1) return result; for (int i = 2; i <= n; i++) result *= i; return result; }

/** * Evaluates factorial by "while" loop * @param n given number * @return n! */ public static int iterativeFactorial2(int n) { int result = 1; if (n == 0 || n == 1) return result; while (n > 1) result *= n--; return result; }

/** * Evaluates factorial by recursion * @param n given number for calculation * @return n! */ public static int recursiveFactorial(int n) { if (n == 0 || n == 1) return 1; return n * recursiveFactorial(n - 1); } /** * Main driver * * @param args command line arguments */ public static void main(String[] args) { int n; Scanner scan = new Scanner(System.in); System.out.println("input integer number: "); n = scan.nextInt(); System.out.println("[for] result: " + iterativeFactorial1(n)); System.out.println("[while] result: " + iterativeFactorial2(n)); System.out.println("[recursion] result: " + recursiveFactorial(n)); } }

#57356

что то вот здесь на много короче :o

Если не высшая, то какая
В школе её точно не проходят

ps на писать то и я бы наверное смог, я просто понять не могу, что вычислить то надо

#57368

В рекурсивном варианте они используют тернарный оператор, поэтому вышло короче. Ты уже знаешь, что такое тернарный оператор?

В итеративном варианте выходит длиннее т.к. нет проверки если целое 0 или 1 (там оно постоянное - 16) и это не отдельная метода, а процедура внутри main.
Хочешь короткий вариант? Пожалуйста:

text
import java.util.Scanner;

public class Factorial {

public static int iterativeFactorial(int n) { for (int i = n - 1; i > 0; n *= i--); return n == 0 ? 1 : n; }

public static void main(String[] args) { System.out.print("input integer number: "); int n = (new Scanner(System.in)).nextInt(); System.out.println(n + "! = " + iterativeFactorial(n)); } }

ST написал:
Если не высшая, то какая
В школе её точно не проходят
oO Да ну? Не уж-то так сильно изменилась система обучения? Я вроде проходил в школе.
#58268

Я закончил школу в 2003 году. У нас факториалов не было

sKwa написал:
Ты уже знаешь, что такое тернарный оператор?

Нет

sKwa написал:
Хочешь короткий вариант?

Я хочу решить сам, но я хз как это факториал вычисляется
//ушёл искать факториал

#86485

Доброе время суток тоже начал изучать java по Хабибулину хорошая книженция написано всё понятно , до этого начал читать П.Ноутон и Г.Шилд "Java 2"-чуть мозг не сломал smile
Предлагаю свою программку для вычисления факториала.

text
class Factorial{
    public static void main(String[]args){
        int b=5;   //Факториал числа b
        int c=1;   //Начальное значения должно быть 1 вне цыкла
        for (int a=1;a<=b;a++){
            c=a*c;
            }
        System.out.println("Factorial "+b+"! = "+c);
    }
}

З.Ы.Над программой сидел мин 20 оказалась простая как дверь smile

#86617

Задание: Напишите цикл, определяющий, какая наибольшая степень числа 2 содержится среди делителей заданного натурального числа.

text

class Del{
    public static void main(String[]args){
        int b=16;                    //Задаём натуральное число.
        int a=1,g=1,h=0;             /*Обязательно вне цикла иначе не будет отображатся,
                                задаются стартовые парамтры для цыклов*/
        for(;a<b;a++){                //Прокручиваем делители
            if((b%a)==0)                 //Отбрасываем числа с остатками
                for(;g==a;g=2*g)          //Находим нужный нам делитель
                    h++;     }            //Кол. цыклов факт. степень 2ух
        
        //Показатели выношу за скобки т.к. надо только последние данные.
        System.out.println("Zadanoe 4islo ("+b+").");
        System.out.println("Naibolshaya stepen` 4isla 2 sredi delitelei ("+h+") 2^"+h+"="+g);
        System.out.print("Naibolshii delitel` ("+a+").");                    
    }
}

З.Ы.Задание должно быть решено без использования массивов. Программа работает правильно только с теми числами двоичный логарифм которых равен числу без остачи.:(((

#86731

(I_P),
Задание от кого и для чего? И с каких это пор число int b=16 - натуральное?

#86786

Hvzh, Задания из учебника -> начало темы. И может я чего-то не понимаю но почему число b=16 не натуральное число.

Войдите или зарегистрируйтесь, чтобы ответить.