Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Проблемы с оператором if / 8 сообщений из 8, страница 1 из 1
07.02.2014, 17:25
    #38553872
alexmx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с оператором if
Доброго времени суток)))
Проблема следующего характера:

Прописываю условие
Код: java
1.
2.
3.
if(mainGroup=="G0"){
                    l1 = (Math.sqrt(Math.pow((x-x1), 2) + Math.pow((y-y1), 2)));
                    }


После чего получаю l1 равным 0.

Если убрать оператор if формула l1 отрабатывается нормально.

Вот весь код:
Код: 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.
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.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
package ru.myscanner.scannerth;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;

import android.widget.TextView;

public class MainActivity extends Activity {
       
	
		@SuppressLint("SdCardPath")
		private String FILENAME = "/mnt/sdcard/cnc.txt";
        
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                TextView text = (TextView)findViewById(R.id.text1);
                
                ArrayList<String> listWithCommands = null;
				try {
					listWithCommands = getCommandsToDB(FILENAME);
				} catch (IOException e) {
					// TODO Автоматически созданный блок catch
					e.printStackTrace();
				}
                for (String s : listWithCommands) {
                    text.append(s+"\n");
                }
            }
         
            public static ArrayList<String> getCommandsToDB(String fileName) throws IOException {
                ArrayList<String> forReturnList = new ArrayList<String>();
                String stringWithText = null;
                BufferedReader bufferedReader = new BufferedReader(new FileReader(new File(fileName)));
                StringBuilder stringBuilder = new StringBuilder();
                
                double x = 0;
                double y = 0;
                double x1 = 0;
                double y1 = 0;
                double l1 = 0;
                
                while((stringWithText = bufferedReader.readLine()) != null) {
                    stringBuilder.append(stringWithText + "\n");
                }
                Pattern pattern = Pattern.compile("((PART)\\s?(((\\w*\\.?))*)?)|(((G|M)[0-9]{1,3})?\\s(Xс**а|B)(-?[0-9]+\\.?[0-9]+)\\s?((X|Y)(-?[0-9]+\\.?[0-9]+))?\\s?(((I)(-?[0-9]+\\.?[0-9]+))?\\s((J)(-?[0-9]+\\.?[0-9]+))?)?)");
                Matcher matcher = pattern.matcher(stringBuilder.toString());
            
                String mainGroup = null;
                String part = null;
                	
                while (matcher.find()) {
                	
                	double a = 0;
                	double b = 0;
                	double i = 0;
                	double j = 0;
                	
                    mainGroup = matcher.group(7);
                    part = matcher.group(3);
                   
                    x = (matcher.group(9) != null && matcher.group(9).equals("X")) ? Double.parseDouble(matcher.group(10)) : 0;
                    y = (matcher.group(9) != null && matcher.group(9).equals("Y")) ? Double.parseDouble(matcher.group(10)) : 0;
                   
                    a = (matcher.group(9) != null && matcher.group(9).equals("A")) ? Double.parseDouble(matcher.group(10)) : a;
                    b = (matcher.group(9) != null && matcher.group(9).equals("B")) ? Double.parseDouble(matcher.group(10)) : b;
                    x = (matcher.group(12) != null && matcher.group(12).equals("X")) ? Double.parseDouble(matcher.group(13)) : x;
                    y = (matcher.group(12) != null && matcher.group(12).equals("Y")) ? Double.parseDouble(matcher.group(13)) : y;
                    i = (matcher.group(16) != null && matcher.group(16).equals("I")) ? Double.parseDouble(matcher.group(17)) : i;
                    j = (matcher.group(19) != null && matcher.group(19).equals("J")) ? Double.parseDouble(matcher.group(20)) : j;
                   
                   
                    
                    //Присвоение  первой  координаты
                    if(x==0){
                    	x=x1;
                    }
                    if(y==0){
                    	y=y1;
                    } 
                    
                    //Вычисление
                    if(mainGroup=="G0"){
                    l1 = (Math.sqrt(Math.pow((x-x1), 2) + Math.pow((y-y1), 2)));
                    }
                    
                    //Присвоение вторичной  координаты
                    if(x!=0 && y!=0){
                    	x1=x;
                    	y1=y;
                    }
                    
                    	 forReturnList.add(mainGroup + "    " + x +"    " + y + "    " + i + "    " + j + "    " + a + "    " + b + "    " + part + "   " + l1); 	
                }
                return forReturnList;  
            }
        } 
...
Рейтинг: 0 / 0
07.02.2014, 17:45
    #38553901
Витяй1991
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с оператором if
Код: java
1.
if(mainGroup=="G0")


попробуй вместо == написать
Код: java
1.
mainGroup.equalsIgnoreCase("G0")
...
Рейтинг: 0 / 0
07.02.2014, 17:50
    #38553915
alexmx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с оператором if
Теперь вылет приложения

02-07 12:11:55.077: E/AndroidRuntime(11600): FATAL EXCEPTION: main
02-07 12:11:55.077: E/AndroidRuntime(11600): java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.myscanner.scannerth/ru.myscanner.scannerth.MainActivity}: java.lang.NullPointerException
02-07 12:11:55.077: E/AndroidRuntime(11600): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
02-07 12:11:55.077: E/AndroidRuntime(11600): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
02-07 12:11:55.077: E/AndroidRuntime(11600): at android.app.ActivityThread.access$600(ActivityThread.java:130)
02-07 12:11:55.077: E/AndroidRuntime(11600): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
02-07 12:11:55.077: E/AndroidRuntime(11600): at android.os.Handler.dispatchMessage(Handler.java:99)
02-07 12:11:55.077: E/AndroidRuntime(11600): at android.os.Looper.loop(Looper.java:137)
02-07 12:11:55.077: E/AndroidRuntime(11600): at android.app.ActivityThread.main(ActivityThread.java:4745)
02-07 12:11:55.077: E/AndroidRuntime(11600): at java.lang.reflect.Method.invokeNative(Native Method)
02-07 12:11:55.077: E/AndroidRuntime(11600): at java.lang.reflect.Method.invoke(Method.java:511)
02-07 12:11:55.077: E/AndroidRuntime(11600): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
02-07 12:11:55.077: E/AndroidRuntime(11600): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-07 12:11:55.077: E/AndroidRuntime(11600): at dalvik.system.NativeStart.main(Native Method)
02-07 12:11:55.077: E/AndroidRuntime(11600): Caused by: java.lang.NullPointerException
02-07 12:11:55.077: E/AndroidRuntime(11600): at ru.myscanner.scannerth.MainActivity.getCommandsToDB(MainActivity.java:96)
02-07 12:11:55.077: E/AndroidRuntime(11600): at ru.myscanner.scannerth.MainActivity.onCreate(MainActivity.java:34)
02-07 12:11:55.077: E/AndroidRuntime(11600): at android.app.Activity.performCreate(Activity.java:5008)
02-07 12:11:55.077: E/AndroidRuntime(11600): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
02-07 12:11:55.077: E/AndroidRuntime(11600): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
02-07 12:11:55.077: E/AndroidRuntime(11600): ... 11 more
...
Рейтинг: 0 / 0
07.02.2014, 17:56
    #38553924
alexmx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с оператором if
96 строка
...
Рейтинг: 0 / 0
07.02.2014, 18:37
    #38553983
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с оператором if
Студия подсказывает см рис.

Попробуй
Код: java
1.
2.
3.
            if("G0".equals(mainGroup)){
                l1 = (Math.sqrt(Math.pow((x-x1), 2) + Math.pow((y-y1), 2)));
            }



И если ошибки не будет и при этом не отработает как положено, то посмотри, что из себя mainGroup к тому времени представляет. Дебаггером.
...
Рейтинг: 0 / 0
07.02.2014, 18:42
    #38553990
alexmx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с оператором if
Вроде кушает нормально)))
Спасибо большое)))
...
Рейтинг: 0 / 0
08.02.2014, 20:09
    #38554579
petrovichtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с оператором if
Ява по-своему работает со строчками, нужно внимательно подсказки Эклипса читать.
...
Рейтинг: 0 / 0
14.02.2014, 14:08
    #38561020
Tensai
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с оператором if
Операция '==' сравнивает ссылки на обьекты, а не значения.
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Проблемы с оператором if / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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