powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как goto сделать между двумя циклами do while
6 сообщений из 6, страница 1 из 1
Как goto сделать между двумя циклами do while
    #38838099
Dimmf28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин у меня было задание запрограммировать метод я это сделал только на vb но использовал там goto
пытаюсь теперь на java тоже самое сделать но не могу понят как использовать метку (мне надо выйти с цикла do while в другой do while чтоб оно его крутило) имитировал это так

Код: 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.
import java.lang.*;
import java.util.*;
public class Main {

	public static void main(String[] args) {
		int j=0;
		int k=0;

		do{
			
		
			loops:do {
				System.out.printf("%3d",j);
                if(j>1){
                	
                	j=0;
                	continue loops;
                }
				j++;
			}while(j<3);
			System.out.println();
			k++;
			j = 0;
			//System.out.println(k);
		}while(k<5);
}}



код на visual basic

Код: vbnet
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.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
Dim x0(2) As Double
Dim y(2) As Double
'Const alfa = 1.618
'Const beta = 0.618
Const alfa = 1
Const beta = 0.5
Const N = 100
Const R = 0.5
Dim t0   As Double
Const M = 3
Dim k As Integer
Dim j As Integer
Dim eta(2) As Double
Dim fnew, fold As Double
Dim znew(2) As Double

Private Sub Command1_Click()
Cls
fnew = 0
fold = 0
Debug.Print ("")
t0 = 0.7
k = 0
j = 1
x0(1) = 0.5
x0(2) = 1
Do

7:

Do
 If (j > M) Then
    If (t0 > R) Then
        t0 = t0 * beta
    Else
        Print ("Result=" & x0(1) & "  " & x0(2) & " k=" & k & "t0=" & t0)
        Exit Sub
        
    End If
    j = 1
    
    GoTo 7
    
 End If
Call geteta(eta())

'Debug.Print (eta(1) & " " & eta(2))
Call gety(y())
'Debug.Print (y(1) & " " & y(2))
fnew = resfunnew(y())
fold = resfunnew(x0())
'Debug.Print (fnew & " " & fold)
'Print (fnew & " " & fold)
j = j + 1
Loop While (fnew > fold)

'Oaa?iia iai?aaeaiea

znew(1) = x0(1) + alfa * (y(1) - x0(1))
znew(2) = x0(2) + alfa * (y(2) - x0(2))

fnew = resfunnew(znew())
'Print (fnew)

If (fnew < fold) Then


k = k + 1
'Ia?aiacia?ei noa?o oi?ee o e oaaa t
Debug.Print ("z1=" & znew(1) & "  z2=" & znew(2) & " x1=" & x0(1) & "  x2=" & x0(2))
x0(1) = znew(1)
x0(2) = znew(2)

t0 = alfa * t0
j = 1
    
End If
Loop While (k < N)
End Sub
Function geteta(ByRef eta() As Double)
Randomize Timer
    eta(1) = 2 * Rnd() - 1
    eta(2) = 2 * Rnd() - 1
    geteta = eta
End Function

Function gety(ByRef y() As Double)
Dim znamen As Double
Dim ytype(2) As Double
znamen = t0 / (((eta(1) ^ 2 + eta(2) ^ 2)) ^ (1 / 2))
y(1) = x0(1) + znamen * eta(1)
y(2) = x0(2) + znamen * eta(2)
gety = y
End Function

Function resfunnew(ByRef eta() As Double)
'resfunnew = 4 * (eta(1) - 5) ^ 2 + (eta(2) - 6) ^ 2
resfunnew = 2 * eta(1) ^ 2 + eta(1) * eta(2) + eta(2) ^ 2
End Function
...
Рейтинг: 0 / 0
Как goto сделать между двумя циклами do while
    #38838111
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimmf28,

Вы бы хоть форатировали код, если хотите чтобы кто-то его читал.
break - выходит из текущего цикла.
continue - начинает новую итерацию текущего цикла.

метка позволяет вызывать break и continue для внешнего цикла. Но для этого метку надо на этот внешнем цикле и поставить.

Какой конкретно вопрос?
...
Рейтинг: 0 / 0
Как goto сделать между двумя циклами do while
    #38838605
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimmf28,

Судя по коду VB необходимость в нем "GOTO" более чем сомнительная.
Вместо "GOTO" там просто нужен еще один цикл

Код: vbnet
1.
2.
3.
DO WHILE (j > M)
...
LOOP



Соответственно в Java так же не нужны "goto"
...
Рейтинг: 0 / 0
Как goto сделать между двумя циклами do while
    #38838856
Dimmf28
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul, подскажите как это будет не могу додуматься
...
Рейтинг: 0 / 0
Как goto сделать между двумя циклами do while
    #38839253
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimmf28,

Постановка задачи какая? (формулы, что нужно вычислить и пр.)
...
Рейтинг: 0 / 0
Как goto сделать между двумя циклами do while
    #38839272
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimmf28mad_nazgul, подскажите как это будет не могу додуматься

Убираете
Код: vbnet
1.
7:



Вместо
Код: vbnet
1.
If (j > M) Then


Пишите
Код: vbnet
1.
Do WHILE(j > M)



Вместо
Код: vbnet
1.
End If


Пишите
Код: vbnet
1.
LOOP



Где-то так.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как goto сделать между двумя циклами do while
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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