Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как goto сделать между двумя циклами do while / 6 сообщений из 6, страница 1 из 1
19.12.2014, 13:55
    #38838099
Dimmf28
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как goto сделать между двумя циклами do while
Блин у меня было задание запрограммировать метод я это сделал только на 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
19.12.2014, 14:03
    #38838111
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как goto сделать между двумя циклами do while
Dimmf28,

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

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

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

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

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



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

Постановка задачи какая? (формулы, что нужно вычислить и пр.)
...
Рейтинг: 0 / 0
22.12.2014, 06:31
    #38839272
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как goto сделать между двумя циклами do while
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
Форумы / Java [игнор отключен] [закрыт для гостей] / Как goto сделать между двумя циклами do while / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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