- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是Java初学者,才刚刚开始自学数组和列表。以下是我为在线礼品登记练习想出的代码片段,虽然我理解其中的大部分内容,但有时我不得不反复试验,直到代码最终显示出我想要的输出。这里有几个问题:
System.out.println("Enter item: ");
gift.add(x.next());
System.out.println("Enter store: ");
store.add(x.next());
这是用户输入礼物时的代码以及他可以从中购买礼物的商店。我发现如果我输入由空格分隔的单词,输出将如下所示:
Do you wish to make a gift wish list? [Y/N]
Y
Enter item:
High heels
Enter store:
Any more items? [Y/N]
问题 #1:为什么会发生这种情况?我在代码的早期声明这是一个字符串(一个 ArrayList
,但是一个 <String>
),甚至当我将 Scanner 方法修改为 (x.nextLine());
时也是如此我仍然会在控制台中打印出来。当用户输入一个单词的答案时,代码工作正常,但我仍然想知道为什么会发生这种情况,以及允许输入空格的可能替代方案是什么。
问题 #2:这部分代码,我不得不在互联网上查找。没有任何解释说明为什么这是必需的,但代码仍然有效。
for (int i = 0; i < gift.size(); i++) {
System.out.print(gift.get(i)+ " - ");
System.out.print(store.get(i));
System.out.println("");
}
在我找到这个之前,我最初是从 System.out.println("Gift List: \n" + gift + " - " + store);
开始的当显示用户输入的项目时,它们位于括号中并以逗号分隔。这段代码中 i 的值是多少,我们为什么要递增它?我还尝试更改 gift
在 gift.size();
至 store
并且代码仍然可以正常工作。顺便问一下,这是为什么?我们只是选择要放置的变量还是要遵循特定的语法?
提前致谢。
编辑:这是完整的代码。
package arrays;
import java.util.ArrayList;
import java.util.Scanner;
public class GiftList {
public static void main(String[] args) {
Scanner x=new Scanner (System.in);
char ans;
ArrayList<String> gift= new ArrayList<String>();
ArrayList<String> store = new ArrayList<String>();
System.out.println("Do you wish to make a gift wish list? [Y/N]");
ans=x.next().toLowerCase().charAt(0);
while (ans!='n')
{
System.out.println("Enter item: ");
gift.add(x.nextLine());
System.out.println("Enter store: ");
store.add(x.nextLine());
System.out.println("Any more items? [Y/N]");
ans=x.next().toLowerCase().charAt(0);
}
System.out.println("Gift List: ");
for (int i = 0; i < gift.size(); i++) {
System.out.print(gift.get(i)+ " - ");
System.out.print(store.get(i));
System.out.println("");
}
}
}
最佳答案
问题一:
您跳过了项目列表,因为 x 仍然包含一个换行符,在添加您的项目之前调用 x.nextLine() 将解决这个问题:
while (ans!='n'){
x.nextLine(); //Skip the enter keypress
System.out.println("Enter item: ");
gift.add(x.nextLine());
System.out.println("Enter store: ");
store.add(x.nextLine());
修复循环后,添加带空格的礼物是可行的。
Do you wish to make a gift wish list? [Y/N]y
Enter item: high heels
Enter store: mine
Any more items? [Y/N] n Gift List: high heels - mine
问题 #2:这部分代码,我不得不在互联网上查找。没有任何解释说明为什么这是必需的,但代码仍然有效。
for (int i = 0; i < gift.size(); i++) {
System.out.print(gift.get(i)+ " - ");
System.out.print(store.get(i));
System.out.println("");
}
这是一个标准for环形。 i
充当列表中每个项目的计数器。 gift.size()
返回列表中项目数量的整数值,i++
使用 i
的当前值,然后递增它在循环完成时。
因为 i
在循环的每次迭代中都会递增,因此调用 gift.get(i)
将返回存储在索引 i
处的值>。所以第一次迭代 i=0
,第二次 i=1
,第三次 i=2
等等。
至于为什么需要它 - 这不是唯一可行的方法,您可以做一些不同的事情来使其工作相同。尽管我个人觉得在这样的例子中循环的标准很容易理解。
这部分代码的关键是调用 store.get(i)
此调用获取与 gift.get()
相同的索引并将返回列表中的相同位置。
我不确定 store 和 gift 是什么关系,但看起来 HashMap可能是更好的 Collection 。 HashMap 是键值对的集合。
有时,以 K,V 关系而不是两个单独的集合来组织您的值更有意义。例如,使用 HashMap ,您将拥有商店->礼物关系,然后可以遍历显示值的集合。查看链接文档以获取一些使用示例。
然而,话虽这么说,最好还是等到 HashMap ,直到你读完书中的相关部分,否则你可能会对这些例子感到困惑。
我认为问题 1 需要更多信息才能正确解释为什么它没有按预期工作。能贴一下周边的代码吗?
关于java - Basic Java ArrayList : Gift List. 代码有效并显示所需的输出但我想了解更多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19934280/
是否可以完全禁用 react-native-gifted-chat 组件的文本输入,包括发送按钮? 这是我当前的组件: 我可以覆盖渲染方法,但是如何渲染原始输入? 最佳答案 由于 React-nat
我有一个“门牌号”的优先队列。我从优先级队列中得到隔壁门号(即对应优先级值最低的门),然后开门。门后可能有礼物,也可能没有。根据礼物的存在/不存在,更新此门号的优先级,并将其放回优先级队列。然后我重复
有没有办法将 Google Billing 的应用内购买“赠与”给特定帐户? 我把这个问题放在这里是因为如果有办法以编程方式进行,那很好,但这不是必须的。在官方文档中找不到任何相关信息。 我想要这个的
我注意到,在最新的《愤怒的小鸟》更新中,他们添加了一项功能,可以从应用内部赠送您的应用。 到目前为止,我知道您可以从 iTunes 本身赠送付费应用程序。有人知道我应该使用什么链接从应用程序内部访问此
如何让移动键盘上的返回按钮发送消息而不是创建新行?我尝试在 textInputProps 中使用 onSubmitEditing 但无法正常工作。 最佳答案 您需要实现自己的 ChatComposer
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我有一个生成礼品代码的后端,每个礼品代码都有一定的使用次数。将这些内容交给博主或其他什么人,他们的读者就可以兑换促销商品的代码。 我正在研究检查代码有效性的最佳方法,而不会发生冲突/欺骗或类似的情况。
为一家位于英国的非政府组织实现 Paypal,他们销售某些服务并接受捐赠。 我正在使用 REST API 销售服务,效果很好,但我们是否也使用相同的 API 进行捐赠。我也想处理 Gift Aids。
谁能帮帮我。 @model LioM.Models.Gift @using (Html.BeginCollectionItem("Gifts")) { } 这是我的 MVC5 局部 View 。它显示
我在使用云Firestore时遇到了react-native-gifted-chat问题。我无法获取以前的消息并附加到有天赋的聊天中。请向我展示如何与云 Firestore 一起使用的代码。谢谢 最佳
Facebook 这里有一个向应用程序添加礼物循环的示例:https://developers.facebook.com/docs/games/requests/ 请参阅“礼物和社交交易” 我的问题是
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在尝试了解 vmsplice(2) 系统调用的功能(手册页 here)。关于 SPLICE_F_GIFT 标志的效果,我有两个问题: 手册页说,一旦将页面赠送给内核,就绝不能再修改内存。这是否意味
有没有办法在测验问题中使用 MarkDown 的固定宽度代码块? 我正在文本编辑器中写我的测验问题 "GIFT" format然后将它们导入到我的测验库中。 GIFT 格式非常快速且紧凑,这种方法让我
有问题的应用程序将包含用于解锁功能的典型不可更新订阅模型,但也将有另一种机制来访问其他功能。 此应用程序将允许用户购买(假设为消耗品)在固定期限内为另一用户访问完整功能。当然,该应用程序必须在其自己的
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我是Java初学者,才刚刚开始自学数组和列表。以下是我为在线礼品登记练习想出的代码片段,虽然我理解其中的大部分内容,但有时我不得不反复试验,直到代码最终显示出我想要的输出。这里有几个问题: Syste
模棱两可的问题,我知道。但无论如何,我正在开发一个客户网站,使用户能够向在国外从事慈善工作的人们捐款。我需要创建个人资料的网站用户能够输入他们的 PayPal 电子邮件地址(例如),因此任何点击个人资
我想编辑一条消息,但它只有在我更改这条消息 _id 时才会更新。有人可以告诉我怎么做吗,这是我的代码: const onSend = useCallback((messagesToSend = [])
我想在滚动到顶部时加载更多消息。有一个 Prop onLoadEarlier 我在这里传递了一个函数来加载更多消息,但它不起作用。打开聊天框时确实会调用此函数,但我想在滚动到顶部时执行一个函数。 最佳
我是一名优秀的程序员,十分优秀!