我尝试使用charAt和子字符串,但被卡在子字符串部分,输出结果应该交换第一个和最后一个字符并打印出来。
import java.util.*;
public class Q1 {
public static void main(String[] args) {
while(true) {
char choice = getChoice();
switch(choice) {
case 'a': printDetails(); break; //exit switch
case 'b': getThreeDecPrintLargestAndSmallest(); break;
case 'c': printNumberRange(); break;
case 'd': isTriangle(); break;
case 'e': isPrime(); break;
case 'f': getAndProcessTenInterger(); break;
case 'g': getStringAndSwap(); break;
case 'q': break;
default : System.out.println("Invalid choice:");
}
if(choice=='q') {
break; // exit while true
}
}
System.out.println("Quit");
}
private static void getStringAndSwap() { //g
try (Scanner kb = new Scanner(System.in)) {
String stringAndSwap = "";
while (true) {
System.out.println("Enter a String up to Max of 50 Characters:");
stringAndSwap =kb.nextLine();
if (stringAndSwap.length() >50) {
System.out.println("String is too long");
}else {
break;
}
}
char beginning = stringAndSwap.charAt(0);
char end = stringAndSwap.charAt(-1);
stringAndSwap.substring(beginning, end);
stringAndSwap.substring(end, beginning);
return System.out.println(stringAndSwap);
System.out.println(stringAndSwap);
}
}
正如注释中指出的,带有参数-1的方法charAt
不会返回字符串的最后一个字符,但它会抛出一个StringIndexOutOfBoundsException
。要检索字符串的最后一个字符,您需要依赖long()
方法并编写如下内容:
myString.charAt(myString.length() - 1);
此外,String
类表示不可变的对象,因此如果需要操作String
,则需要使用StringBuilder
类。您的交换方法应该如下所示:
private static void getStringAndSwap() {
try (Scanner kb = new Scanner(System.in)) {
String stringAndSwap = "";
while (true) {
System.out.println("Enter a String up to Max of 50 Characters:");
stringAndSwap = kb.nextLine();
if (stringAndSwap.length() > 50) {
System.out.println("String is too long");
} else {
break;
}
}
//Creating a StringBuilder based on the String read
StringBuilder strBld = new StringBuilder(stringAndSwap);
//Saving the first character of the string in a temp var
char beginning = strBld.charAt(0);
//Setting the last character of the string in place of the first character
strBld.setCharAt(0, strBld.charAt(strBld.length() - 1));
//Setting the last character of the string with the first character previously saved
strBld.setCharAt(strBld.length() - 1, beginning);
//Printing the result
System.out.printf("Swapped string is %s%n", strBld);
}
}
问题内容: 我想在很大的字符串的特定位置找到字符。但是我无法使用方法,因为范围超出了int的范围。有什么调整吗? 问题答案: 在Java中,字符串由字符数组支持。数组的理论大小受的最大值限制,因此不可能有超过2 31 -1个字符的字符串开头。 要解决此问题,您可以创建自己的使用多个数组或字符串作为存储的字符串类。
我正在制作一个彩票程序,模拟一个人选择6个中奖号码,并使用多种方法抽奖中奖号码。 这是一个示例输出 我的问题是,查找匹配总数的方法不起作用,我不知道如何修复它。用户输入的数字和彩票随机数都是数组 这是我的代码:
我正在编写一个程序,接收用户的出生信息,年、月、日、时、分。该计划如下: 使用< code>getRangedInt方法输入一个人出生的年份(1965-2000)、月份(1-12)、日期*、小时(1-24)、分钟(1-59)。 注意:使用switch()条件选择器结构将用户限制在其出生月份的正确天数内。例如,如果他们出生在2月[1-29]日、10月[1-31]日。提示:这里只有几个组,而不是12个
如果第一个字符串在字典上大于第二个字符串,它应该返回1,如果等于返回0,则返回-1。在某些情况下正确地返回1,-1,0,但对于这个str1和str2,返回结果与所需的输出相反。
问题内容: 我在此代码块中有一个错误。调试器提示原因是这一行代码 该代码的作用是寻找和之间的匹配。我必须逐一检查secretWord字母的长度,如果有匹配的字母,则返回true。如果不是,则返回false …但是当假定只是返回false时,程序崩溃…我猜想这与该行有关,但不知道到底是什么 附带说明一下,我将这段代码正确地完成了,将getSecretWorld()方法分配给String以便我可以使用
问题内容: 我一直想知道java中String / StringBuilder / StringBuffer的charAt函数的实现是什么?还有StringBuffer / StringBuilder中的deleteCharAt()呢? 问题答案: 对于,和,是恒定时间的运算。 对于和,是线性时间运算。 并具有非常相似的性能特征。主要区别在于前者是(因此是线程安全的)而后者则不是。