powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос новичка
2 сообщений из 2, страница 1 из 1
Вопрос новичка
    #37888297
SimbaRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть определённая задача.
Привожу решение в соответствии со своим начальным уровнем знаний и прошу, если не затруднит, показать более оптимальное и правильное решение.

Входное значение:
строка с числами, пробелами и переводами строк
456
0

999
111111111111111111111


Результат:
корень из введённых чисел в обратном порядке в формате 9.9999 без отсечения нулей

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
import java.math.BigDecimal;
import java.util.Scanner;
public class Test {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        String s[] = sc.nextLine().trim().split("\\s+");
        for(int i = s.length - 1; i > -1; i--) {
            System.out.println(BigDecimal.valueOf(Math.sqrt(Double.parseDouble(s[i]))).setScale(4,BigDecimal.ROUND_HALF_DOWN).doubleValue());
        }
    }
}



Вопросы:
1. как строку с пробелами и переводами строк загнать в массив?
2. как вывести число в нужном формате без отсечения нулей?
3. как максимально правильно и оптимально решить задачу?

Спасибо!
...
Рейтинг: 0 / 0
Вопрос новичка
    #37888450
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SimbaRu,

С ACM задача?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
...

/**
 * 
 * @author ivanov-void
 *
 */
public class Main {
	/**
	 * 
	 * @param args
	 */
    public static void main(String[] args) {
    	new Main().solve();
    }
    /**
     * 
     */
    public void solve() {    	
    	Scanner scanner = new Scanner(System.in);    	        
    	scanner.useDelimiter(Pattern.compile("[ \\f\\n\\r\\t\\v]+"));
    	List<Double> arrayList = new ArrayList();
    	while(scanner.hasNext()) 
    		if(scanner.hasNextDouble())
    			arrayList.add(scanner.nextDouble());    			
    		else break;        
    	
    	Collections.reverse(arrayList);
    	for(double d : arrayList) 
    		System.out.printf("%.4f\n", Math.sqrt(d));    		    	   
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
1 2 3 4 5 6
	7	8	  9 10
11
12
   14 4    4 0 1 3
2 2 3 4 4 4 4 4
q
2,0000
2,0000
2,0000
2,0000
2,0000
1,7321
1,4142
1,4142
1,7321
1,0000
0,0000
2,0000
2,0000
3,7417
3,4641
3,3166
3,1623
3,0000
2,8284
2,6458
2,4495
2,2361
2,0000
1,7321
1,4142
1,0000



Решение на максимальную правильность и оптимальность не претендует, но на некоторые из ваших вопросов отвечает.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос новичка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]