Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java新手试图将字符串传递给Java实例_Java_String_Char_Instance - Fatal编程技术网

Java新手试图将字符串传递给Java实例

Java新手试图将字符串传递给Java实例,java,string,char,instance,Java,String,Char,Instance,目前,我正试图在我正在创建的项目中执行凯撒密码。但是,当我试图将字符串传递给处理它的实例时,它似乎根本无法处理它。(现在我忽略了空格和标点符号) import javax.swing.*; 导入java.text.*; 导入java.util.*; 导入java.lang.*; 公共类密码{ 私有字符串短语;//将被加密的短语 private int shift;//移动字母的数字 /////////////// //建造师// ////////////// 公共密码(int new_shift

目前,我正试图在我正在创建的项目中执行凯撒密码。但是,当我试图将字符串传递给处理它的实例时,它似乎根本无法处理它。(现在我忽略了空格和标点符号)

import javax.swing.*;
导入java.text.*;
导入java.util.*;
导入java.lang.*;
公共类密码{
私有字符串短语;//将被加密的短语
private int shift;//移动字母的数字
///////////////
//建造师//
//////////////
公共密码(int new_shift)
{
班次=新班次;
}//密码构造函数的结尾
////////////
//存取器//
////////////
public int askShift(){
返回移位;
}//askShift存取器的结束
////////////
//突变子//
////////////
公共无效转换(int新闻转换){
班次=新班次;
}//变换移位变异体结束
/////////////
//实例//
/////////////
公共字符串加密(字符串消息){
char[]charArray=message.toCharArray();//转换为字符数组
//执行加密的循环
for(int count=0;count
您需要再次将返回值分配给
短语

phrase=cipher.encryptIt(phrase);

你必须换这条线

cipher.encryptIt(phrase);

以更改
短语
变量的值


这是因为Java通过值传递所有参数。这意味着,当您通过方法发送变量时,您发送的不是实际引用,而是引用的副本。

您的新加密字符串是一个返回值。传递给该方法的字符串保持不变。举个例子

String encryption = cipher.encryptIt(phrase); 
JOptionPane.showMessageDialog(null, encryption ); 

您应该知道的一件主要事情是:在Java中,方法参数是按值传递的

简言之:

public void foo(Bar bar) {
    bar = new Bar(999);
}
public void someMethod() {
    Bar b = new Bar(1);
    foo(b);
    // b is still pointing to Bar(1)
}

因此,您的
message=新字符串(charArray)
不会影响传递给
encryptIt()

的参数,这与字符串的不可变性无关。这都是因为传递值
String encryption = cipher.encryptIt(phrase); 
JOptionPane.showMessageDialog(null, encryption ); 
public void foo(Bar bar) {
    bar = new Bar(999);
}
public void someMethod() {
    Bar b = new Bar(1);
    foo(b);
    // b is still pointing to Bar(1)
}