안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
C++ 언어에서는 별거도 아닌것이 Java에서 하니가 잘 동작을 안하네요.
함수에서 문자열 2개를 받아야 하는데요.
C언어라면,
int func(char * pa, char * pb)
{
if(pa != null)
strcpy(pa, "Test");
if(pb != null)
strcpy(pb, "Program");
}
뭐 이런식으로 함수를 초훌하면 함수내에서 생성한 문자열 2개를 받아야 합니다.
java 로 처음에는
boolean getTwoString(String pa, String pb)
{
pa = "Test";
pb = "Program";
return true;
}
호출쪽 함수
void test()
{
String parama;
String paramb;
if (getTwoString(parama, paramb))
{
// prarama 와 paramb 출력
}
}
이렇게 하였는데 아무것도 출력되지 않더군요.
그래서, 아래와 같은 수정을 해 보았는데 그래도 안되네요.
class ParamInfo {
String a;
String b;
}
ParamInfo getTwoString()
{
ParamInfo param = new ParamInfo();
param.a = "Test";
param.b = "Program";
return param;
}
void test()
{
ParamInfo param = getTwoString();
if (param != null)
{
// praram.a 와 param.b 출력
}
}
이렇게 해도 아무것도 안 나오네요.
java 에서는 c 언어에서 처럼 여러개의 파라미터를 돌려 받으려고 할 때 ,
어떻게 하나요?
감사합니다.
C++ 언어에서는 별거도 아닌것이 Java에서 하니가 잘 동작을 안하네요.
함수에서 문자열 2개를 받아야 하는데요.
C언어라면,
int func(char * pa, char * pb)
{
if(pa != null)
strcpy(pa, "Test");
if(pb != null)
strcpy(pb, "Program");
}
뭐 이런식으로 함수를 초훌하면 함수내에서 생성한 문자열 2개를 받아야 합니다.
java 로 처음에는
boolean getTwoString(String pa, String pb)
{
pa = "Test";
pb = "Program";
return true;
}
호출쪽 함수
void test()
{
String parama;
String paramb;
if (getTwoString(parama, paramb))
{
// prarama 와 paramb 출력
}
}
이렇게 하였는데 아무것도 출력되지 않더군요.
그래서, 아래와 같은 수정을 해 보았는데 그래도 안되네요.
class ParamInfo {
String a;
String b;
}
ParamInfo getTwoString()
{
ParamInfo param = new ParamInfo();
param.a = "Test";
param.b = "Program";
return param;
}
void test()
{
ParamInfo param = getTwoString();
if (param != null)
{
// praram.a 와 param.b 출력
}
}
이렇게 해도 아무것도 안 나오네요.
java 에서는 c 언어에서 처럼 여러개의 파라미터를 돌려 받으려고 할 때 ,
어떻게 하나요?
감사합니다.
2010.04.30 21:38:28
저렇게 사용하고 싶으신 경우 map 을 사용하시면 좀 더 간단합니다.
java 의 String 경우는 primitive type 아니면서 call by value 처럼 쓰기 위해 좀 특이한 방법을 쓰기 때문에
왜 StringBuffer 를 써야하는지 설명해놓은 글을 몇개 보시면 이해가 되실겁니다.
2010.04.30 23:50:45
자바에서는 없는 기능입니다.
자바와 많이 유사한 c#에서는 ref 나 delegate가 있어 변수 레퍼런스를 넘기거나 함수 레퍼런스를 인자로 넘겨줄수가 있으나 자바는 그런 방법이 없습니다.
위의 경우(값을 두개 이상 받아야할때)는 보통 배열이나 List를 사용하여 받습니다.
함수포인터를 인자로 주어야 할 경우는 그 함수가 존재하는 객체를 넘겨서 호출해야 합니다.
2010.05.03 00:54:43
가장 간단한 방법으로 써 배열을 사용하는 방법입니다. 하지만 어쨋든 배열참조(변수) 를 넘겨주기 전에 배열요소는 초기화 되어야 합니다.
public class Test1 {
public static void main(String[] args) {
String[] x = {"",""};
System.out.println("before 1="+x[0]);
System.out.println("before 2="+x[1]);
boolean rtnVal = change(x);
System.out.println("return value="+rtnVal);
System.out.println("after 1="+x[0]);
System.out.println("after 2="+x[1]);
}
private static boolean change(String[] x) {
x[0] = "100";
x[1] = "200";
return true;
}
}
{
ParamInfo param = new ParamInfo();
param.a = new String("Test");
param.b = new String("Program");
return param;
}
이런식으로 바꾸니까 되는거 같네요.